1
2
3
4
|
if*[*"a"*=*"a"*] // 空格用*标示
then
echo "a = a"
fi
|
最近几天写脚本,遇到if语句时总是吃不准。这次总结一下。
使用if语句有2中方式,一种是使用test命令另一种是使用“[]”,其中后者比较常用。
方法一,使用test命令,这个命令返回一个boolean值。
1
|
test -e /dataa || echo "不存在"
|
上面的例子使用了判断语句的短路功能,即如果“||”前面是true的话,后面的语句就没有必要执行了。所以不会显示“不存在”。
参数:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
-e 通过文件名文件是否存在
-f 通过文件名判断是否是文件
-d 通过文件名判断是否为目录
-eq 判断两个数值是否相等
-nq 判断两个数值是否不相等
-gt 判断第一个数值是否大于第二个数值
-lt 判断第一个数值是否小于第二个数值
-ge 判断第一个数值是否大于等于第二个数值
-le 判断第一个数值是否小于等于第二个数值
-z 判断字符串是否是空串
-n 判断字符串是否不是空串
= 判断两个字符串是否相等
!=判断两个字符串是否不相等
-a 相等于&&
-o 相当于||
! 逻辑非
|
方法二:
除test命令外,还可以使用“[]”,但是需要注意的是需要用空格在各个单位间,如:
1
2
3
4
|
if [ "a" = "a" ]
then
echo "a = a"
fi
|
在判断的时候使用“==”或者是“=”都是可以的。其中“[]”中的变量最好用双引号设置,常量用双引号和单引号都行。
这种形式可能和test命令有关,对比下:
1
2
3
4
|
if test "a" = "a"
then
echo "a = a"
fi
|
下面的写法也是可行的:
1
2
3
|
if test "a" = "a" ;then
echo "a = a"
fi
|
转自 http://hanzc.diandian.com/post/2012-10-11/40040042777