- 条件测试
1.1 数值大小测试
1.2 字符串测试
1.3 文件测试
1.4 逻辑操作符 - 判断
- 循环
3.1 continue 空过本轮循环
3.2 break 断掉循环
1. 条件测试
条件表达式和左右方括号之间都必须有一个空格。
1.1 数值大小测试
[ $a -eq 2 ] # 比较$a是否等于2。 -eq: equal
-ne
: not equal
-gt
: greater than
-lt
: less than
-ge
: greater than or equal
-le
: less than or equal
$ i=10;j=100
$ if [ $i -gt $j ];then echo "$i > $j";else echo "$i < $j";fi
10 < 100
1.2 字符串测试
test $a #判断字符串是否为空
test $a = $b # 判断两个字符串是否相等
test $a != $b # 判断两个字符串是否不相等
[ -n $i ] # -n: 判断字符串是否是非空串
[ -z $j ] # -z: 判断字符串是否是空串
1.3 文件测试
[ -a file ] #文件是否存在
-e
: 同 -a
-d
: 文件是否为目录
-s
: 文件是否为非空文件
-w
: 文件是否可写
-r
: 文件是否可读
-x
: 文件是否可执行
[ -a $input ] || echo "file does not exist" && exit
在 Shell 脚本的参数判定中挺实用的。
1.4 逻辑操作符
[ ! -a file ] #!: 逻辑非。文件是否不存在
test -a file -a -d file #-a: 逻辑与。判断:file是否存在且为目录
[ $a -eq 0 -o $a -eq 1 ] #-o: 逻辑或。判断:整数是否等于0或1
!
: 逻辑非
-a
: 逻辑与,and
-o
: 逻辑或,or
注意文件测试的 -a,与逻辑与 -a 的区别。
2. 判断
for i in `seq 10`
do
if [ $i -lt 3 ]
then
echo "ok"
elif [ $i -lt 6 ]
then
echo "good"
elif [ $i -lt 9 ]
then
echo "excellent"
else
echo "perfect"
fi
done
ok
ok
good
good
good
excellent
excellent
excellent
perfect
perfect
3. 循环
3.1 continue 空过本轮循环
for i in `seq 5`
do
if [[ $i -eq 3 ]]
then continue
fi
echo $i
done
1
2
4
5
3.2 break 断掉循环
for i in `seq 5`
do
if [[ $i -eq 3 ]]
then break
fi
echo $i
done
1
2
网友评论