linux成长记-3.21

shell脚本语法
1  expr 数值运算工具

   注 : 给变量赋值时‘=’号前后没有空格;当进行运算时运算符前后有空格,变量引用前面加$符号

            expr1 \* 3 使用*要加转义符,除不需要转义。

            注意图二使用的是反引号 ` 而不是单引号 '

2 运行方式的差异

(2.sh脚本)

   注 (.  2.sh )与(source  2.sh)作用相同。

   产生上图原因:(sh 2.sh)与(./2.sh)执行命令会产生子进程,脚本执行在子进程中执行,变量为局部变量,不会返回到父进程中。

                           (.  2.sh )与(source  2.sh)执行命令会在当前进程中进行,变量可以被输出显示。

3 变量表达式

3.1适用整数 test   n1  -参数   n2           (真返回0,假返回1)

                                  -lt  小于

                                 -le  小于等于

                                 -gt  大于

                                 -ge 大于等于

                                 -eq等于

                                 -ne不等于

        注 : 可用中括号代替test。例  test  1  -lt  4   等价于  [ 1 -lt 4 ] (表达式与中括号间有空格)

3.2 文件测试    -f    存在且是普通文件
                       -d   存在且是目录
                       -s   存在且字节数大于0
                       -r   存在且可读
                       -w  存在且可写
                       -x   存在且可执行   -e  文件是否存在   
3.3 字符测试   (建议用两个中括号[[   ]])

                       =    , !=    ,  -n  string  测试指定的字符串长度非0

                        -z   字符串的长度为0 , >  如果str1的字母顺序比str2大,则返回真,< 如果str1的字母顺序比str2小,则返回真

3.4 其他

                    !  非运算,表达式为 true则返回 false,否则返回 true[ ! false ] 返回 true。

                     o  或运算,有一个表达式为 true 则返回 true。[ $a -lt 20 -o $b -gt 100 ] 返回 true。

                     a  与运算,两个表达式都为 true 才返回 true。[ $a -lt 20 -a $b -gt 100 ] 返回 false。

4 控制流程

4.1seq命令


4.2 分支结构

if [ $# -eq 0 ]
then
echo “输入了0个参数”
elif[ $# -gt 1 ]
then echo “输入了多个参数”
else echo “输入了1个参数”
fi
case “$#” in
0)echo “输入了0个参数”;;
1)echo “输入了1个参数”;;
*)echo “输入了多个参数”;;
esac
每个分支条件后必须以两个分号结尾

4.3 循环结构

例子:输出100内10的倍数
#for i  in {1..9} (大括号中不能有变量
for  i   in  `seq1 9`(此处可以用变量 如  `seq  $1   9`)
do
echo `expr  $i  \*  10`
done

4.4  read 变量1 [变量2 …]

       可以从键盘上读取多个变量的值,用户输入数据时,以空格或者Tab键作为分隔。

       如果输入的数据个数不够,则从左到右对应赋值,没有输入的变量为空;

       如果输入的数据个数超了,则从左到右对应赋值,最后一个变量被赋予剩余的所有数据。

4.5   break  跳出内部循环      break2   跳出外部循环

        continue   跳出内部判断   continue2   跳出外部判断

5 函数  函数由两部分组成:函数标题和函数体

        所有函数在使用前必须定义。必须将函数放在脚本开始部分,直至shell解释器首次发现它时,才可以使用。 

6 数组

      echo ${array_var[*]}   (打印数组中所有的值 ,单个)

      echo ${array_var[@]}    (打印数组中所有的值,一串)

      echo ${#array_var[*]}   (打印数组长度)

  shell 提供了另外一种数组,其可以使用任意的字符串作为下标(不必是整数)来访问数组元素。这种数组叫做关联数组。

  关联数组的下标和值称为键值对,它们是一一对应的关系。在关联数组中,键是唯一的,值可以不唯一。

  注:在使用关联数组之前,需要使用命令declare -A array 进行显示声明

  例: name=(jimtom lucy)
          declare -A phone
          phone=([jim]=135 [tom]=136 [lucy]=158)
          for i   in `eval  echo {0..$((${#name[*]}-1))}`
          do
               echo ${name[i]} phone number is ${phone["${name[i]}"]}

          done

          ${!array[*]}取关联数组所有键

          ${!array[@]}取关联数组所有键

          ${array[*]}取关联数组所有值

          ${array[@]}取关联数组所有值

          ${#array[*]} 关联数组的长度

          ${#array[@]}关联数组的长度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值