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