【学习笔记】条件测试的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}    

.+\.   .+代表任意长度的字符串,\.则转义,代表任意字符的意义。

 

posted @ 2014-12-29 15:44  sky.zhao  阅读(402)  评论(0编辑  收藏  举报