条件测试的写法,有以下10种。
执行某一个命令的结果
这里的命令,可包括管道命令,例如:命令1|命令2|命令3,其结束状态为最后一个命令的执行结果。
例如:
#!/bin/bash
if grep -q "rm" fn.sh; then
echo "find rm command."
else
echo "not find."
fi
在这个例子中,grep -q "rm" fn.sh,它是寻找fn.sh文件里是否含有关键词rm。选项-q表示不显示,仅借助$?来传回执行结果。
传回某一命令执行结果的相反值
其形式为: ! 命令。
例如:
#!/bin/bash
if ! rep -q "rm" fn.sh; then
echo "find rm command."
else
echo "not find."
fi
使用符合命令:((算式))
((0)) ((1)) ((0&&1))
使用Bash关键词"[["、"]]"组成的句子:[[判断式]]
例如:
#!/bin/bash
if [[str>xyz]];then
echo "字符串str比较大"
else
echo "字符串str比较小"
fi
使用内置命令:test 判断式
#!/bin/bash
if test "str" \> "xyz"; then
echo "字符串str比较大"
else
echo "字符串str比较小"
fi
使用内置命令:[]
其形式为:[判断式]
[]和test的用法是相同的,两者可改写互换。
#!/bin/bash
if["str" /> "xyz"];then
echo "字符串str比较大"
else
echo "字符串str比较小"
fi
使用 -a、-o进行逻辑组合:
[-r filename1 -a -x filename]
如果filename1可读且可执行,则为真。-a 即"且"之意。
[-r filename1 -o -x filename]
如果filename1可读或可执行,则为真。-o 即"或"之意。
命令1 && 命令2
&&称为逻辑的AND,如果“命令1”执行结果为真,才会执行“命令2”;
例如:
#/bin/bash
a=20
if grep -q "rm" fn.sh && [$a -lt 100] ; then
echo "ok"
else
echo "not ok"
fi
&&的特性,经常拿来当作是一种隐形的if语法。
例如:
[-z "$PS1"] && return
它等效于:
if[-z "$PS1"] ; then
return
fi
命令1 || 命令2
||被称为逻辑的OR,其运作方式是:如果“命令1”执行结果为假,才会执行“命令2”;