站长资讯网
最全最丰富的资讯网站

shell脚本基础语法(if 和 数组)解析

条件判断命令:test 或者 [ ]

  例:test 1 –lt 4 #判断1<4  test语句的等价形式[ 1 –lt 4 ]   

文件测试符号

  -f 存在且是普通文件   -d 存在且是目录   -s 存在且字节数大于0   -r 存在且可读   -w 存在且可写   -x 存在且可执行   如:test -d “mydoc” :判断mydoc是否是目录  

例子:
1.判断文件夹是否存在

  #如果文件夹不存在,创建文件  if [ ! -d "/file" ]; then      mkdir /file  fi  

2.判断文件夹是否存在且具有可执行权限

  #判断文件夹是否存在且具有可执行权限  if [ -d "/file" ]; then      if [ -x "/file" ]; then          echo "chmod x exist"      else          echo "chmod x no exist"      fi   fi  

3.判断两个变量是否相等

  #判断两个变量是否相等  if [ "$var1" = "$var2" ]; then      echo '$var1 eq $var2'  else      echo '$var1 not eq $var2'  fi  

4.判断一个变量是否有值

  # -n 判断一个变量是否有值  if [ ! -n "$var" ]; then      echo "$var is empty"      exit 0  fi  

数组定义:

  可以在单行中使用一列值来定义一个数组:   array_var = (1 2 3 4 5 6)   #这些值将会存储在以0为起始索引的连续位置上   另外,还可以将数组定义成一组“索引-值”:   array_var[0]="test1"   array_var[1]="test2"   array_var[2]="test3"   array_var[3]="test4"   array_var[4]="test5"  

1.打印出特定索引的数组元素内容:

  echo ${array_var[0]}   test1    index=4   echo ${array_var[$index]}   test5  

2.以清单形式打印出数组中的所有值:

  echo ${array_var[*]}  test1 test2 test3 test4 test5    也可以这样使用   echo ${array_var[@]}  test1 test2 test3 test4 test5  

3.打印数组长度:

  echo ${#array_var[*]}   5  

shell中的关联数组:

  1.shell 提供了另外一种数组,其可以使用任意的字符串作 为下标(不必是整数)来访问数组元素。这种数组叫做关联数组(associative array)。   2.关联数组的下标和值称为键值对,它们是一一对应的关系 。在关联数组中,键是唯一的,值可以不唯一。   3.shell 的关联数组和 shell 的下标数组在定义和使用上完 全一样,只是在索引上有区别。  4.需要注意的是,在使用关联数组之前,需要使用命令 declare -A array 进行显示声明  

实例:

  1、name=(jim tom lucy)  2、  declare -A phone   phone=([jim]=135 [tom]=136 [lucy]=158)  3、  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[@]} 关联数组的长度  

赞(0)
分享到: 更多 (0)
网站地图   沪ICP备18035694号-2    沪公网安备31011702889846号