条件判断命令: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[@]} 关联数组的长度