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