【学习笔记】条件测试的10种写法
1、执行某一个命令的结果:
if grep -q "rm" fn.sh ;then
2、传回某一命令执行结果的相反值:
! 命令 注意!和命令之间要由空格符隔开。
if ! grep -q "rm" fn.sh; then
3、使用复合命令:((算式))
如果算式的运算结果不为0,则传回真值(0),否则如果运算结果为0,则传回假值。
4、使用bash关键词'[[ ]] [[ 判断式 ]]
判断式会传回真假值,传回0为真,非0为假。
注意:[[的后面,]]的前面,都至少要由一个以上的空格符才行。
5、使用内置命令:test 判断式。
可传回判断式的结果,真值传回0,假值传回1.
6、使用内置命令:[]
[] 和 test的用法是相同的,两者可改成互换。
7、使用 -a -0进行逻辑组合。
[ -r filename1 -a -x filename] 如果filename1可读且可执行,则为真, -a且的意思。
[ -r filename -o -x filename ] -0 或的意思。
8、使用命令1 && 命令2 逻辑AND;运作方式是:如果命令1执行结果为真,才会执行命令2.如果两个皆为真,
则传回真值0,否则传回假值1.
&&的特性,经常拿来当做一种隐形的if语法。 [ -z "$PS1" ] && return
9、命令1 || 命令2
逻辑或,运作方式:如果命令1执行结果为假,才会执行命令2.如果两个之中有个为真,则传回真值0,否则传回假值1.
||的特性,也可以当做一种隐形的if语法。
例如: prefix="/home"
defpath="/usr/local/bin"
[ -z ${prefix:-} ] || prefix=${defpath%/*}
10、 && || 合用
可以有if-then-else
[ -n ${DEBUG:-} ] && set -v || set +v
[[]] test []意思和用法很近。但是[[ ]]不必担心某些bash特殊字符对运算符的影响,不必写一堆转义字符的怪符合。
特别注意:在[[ 判断式 ]]中,如果使用== 或!= ,且在这两个运算符右方的字符串没有加上单引号或双引号,
则==和!= 会视为想要对比该字符串所形成的”样式“,如果相符传回1,如果不符,传回1.
=~ ... .{3}
.+\. .+代表任意长度的字符串,\.则转义,代表任意字符的意义。