Shell编程

一.Shell

作用:把Linux中的命令保存起来,下次需要时直接运行Shell程序

①cd    Desktop/

②mkdir  shellText/

③cd    shellText/

④touch    hello.sh

⑤vim    hello.sh

sh    hello.sh运行文件程序

在hello,sh文件内进行shell编程


1.定义变量(不能有空格)

name='zhangsan'

echo  ${name}——>"zhangsan"

num=10

echo  ${num}——>"10"

echo   "your  name  is ${name}"    ---->"your  name  is  zhangsan"

myname = 'abc'

  ###重新赋值

readonly  myname

myname=’dce‘——>'dce'

###删除变量(unset)

在shell编程中如果一个变量被删除,再次使用不会报错但是没有输出


2.字符串

双引号:内不能包含“$,`,\等字符”("  ")

单引号:任意字符都不会被解析,都会原样输出('  ')

反引号:会将内容当做命令来执行(`  `)


3.数组(默认获取数组中的第0个元素)

arr1=(10  20  30  40)

echo  ${arr1}——>10

arr2=(

10

20

30

40

)

echo  ${arr2}——>10

#获取数组中的元素

echo ${arr1[2]}——>30

echo ${arr1[@]}——>10  20  30  40

#获取数组的长度

echo ${#arr1[@]}——>4

echo ${#arr1[*]}——>4

4.运算符

算术运算符

①val=`expr  2 + 2`

echo  ${val}——>4

②val=`expr  2\*2`

echo  ${val}——>4

③val=`expr  2 / 2`

echo  ${val}——>1

④val=`expr  2  %  2`

echo  ${val}——>0

关系运算符
a=10

b=20

if [  $a -eq $b  ]       -eq相当于Python中的==(中括号前后加空格)

then

  echo "a等于b"

else

  echo "a不等于b"

fi    (后面要加fi为结束语句)

#逻辑运算符

if [ 1 -lt 3 -a 2 -lt 3 ]     -lt相当于小于号,-a相当于python中的and

then

  echo "ok"

fi

if [ 1 -lt 3 ] && [ 2 -lt 3 ]

then

  echo "ok~~~"

fi

5.检测

#!/bin/bash

#算术运算符检测

val=`expr 2 + 2`

echo ${val}

val=`expr 2 \* 2`

echo ${val}

val=`expr 2 / 2`

echo ${val}

val=`expr 2 % 2`

echo ${val}

#关系运算符检测

a=10

b=20

if [ $a -eq $b ]

then

  echo "a等于b"

else

  echo "a不等于b"

fi

#逻辑运算符检测

if [ 1 -lt 3 -a 2 -lt 3 ]

then

  echo "ok"

fi

if [ 1 -lt 3 ] && [ 2 -lt 3 ]

then

  echo "ok~~~"

fi

六.打印语句

①echo

echo -e "ok,\c"    ——>ok

(-e表示开启转义,-c表示不换行,/n表示换行)

echo "test~~~~"    ——>test~~~

echo `date`       ——>当前时间

echo `cal`      ——>日历

②printf

printf "%-10s %-8s %-4s\n" 姓名 性别 体重————————》      姓名               性别       体重

printf "%-10s %-8s %-4s\n" zhangsan nan 66.0543    ————》   zhangsan       nan    66.0543

printf "%-10s %-8s %-4.3s\n" lisi nv 50.634343———————》    lisi                 nv   50.

printf "%-10s %-8s %-4.2s\n" jack nan 75.0434———————》   jack               nan     75.

10s/8s/4s分别代表占位符,占位符越大中间间距越大

第三行的4.3和第四行的4.2分别表示(整体!)保留三位和两位

七.Shell语句

a=10

b=20

if [ $a -eq $b ]

then

  echo "="

elif [ $a -gt $b ]

then

  echo "》"

else

  echo "<"

fi

case语句判断

echo "请输入一个数字"

read num

case $num in

  1) echo "你选择了1"

  ;; #打印数组中的所有元素个数

  2) echo "你选择了2"

  ;;

  *) echo ""

  ;;

esac


#循环语句

①for num in 1 2 3 4

do

  echo $num

done

②for s in "hello"

do

  echo $s

done

③arr=(34 54 54 54)

for x in ${a[*]}

do

  echo $x

done

④while语句

n1=0

sum1=0

while [$n1  -lt    5]               -lt代表小于号

do 

     sum1=$[sum+$n1]

     n1=$[$n1+1]或者(let  "n++")

⑤#until(相当于js中的do    while)

i=0

until    [  $i  -lt  5]

do

echo  $i

((i++))

done

八  函数

①无参无返回值

demo(){

echo "hello" #打印数组中的所有元素个数

}

demo

②有返回值函数

add()

{

echo    "请输入第一个数"      

read    num         #read表示从控制台输入

echo  "请输入第二个数"

read    otherNum

return     $(($ #打印数组中的所有元素个数num+$otherNum))

}

add

echo     "得到的结果为位$?"

③有参数函数

arg()

{

echo    $1           #接参数

echo    $2

echo    $#          #打印长度

echo    $*           #打印数组中的所有元素个数

return  23

}

arg    10    20

echo    $?

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、shell编程 1.简介 1.1什么是shell 把在终端运行的命令保存到文件中,这个文件就是shell程序简...
    郑元吉阅读 251评论 0 0
  • 流程控制 if 单条件 双分支 多分支 case case支持glob风格的通配符: *: 任意长度任意字符?: ...
    毛利卷卷发阅读 774评论 0 1
  • 数字比较 ``` -eq 等于,如:if [ "$a" -eq "$b" ] -ne 不等于,如:if...
    飞翔你我阅读 291评论 0 0
  • 悉尼 悉尼 请别过脸去 请莫闲看赤露的悲切 这一刻 离别的眼泪在飞 机场内的安检 检不出偷走的记忆 检不出掩藏的叹...
    陈谦swan阅读 208评论 0 0
  • “支付宝到账3000元” “您的借记卡收入3000元” 我用力攥了一下手机,推开门走进了药房。 支付系统发出“...
    Sashimuel阅读 517评论 0 0