shell脚本--语法

条件测试:test/[

命令test/[ 可以测试一个条件是否成立,如果测试条件为真,则该命令的ExitStatus为0,反之,ExitStatus为1。

shell脚本--语法_第1张图片shell脚本--语法_第2张图片

注意:命令[ 各参数之间应该用空格隔开,以]结尾。但是 ] 不是命令。

测试命令:

[ -d dir ] :如果dir存在并且是一个目录则为真

[ -f file ]:如果file存在并且是一个普通文件则为真

[ -z string ]:如果string的长度为0则为真

[ -n string ]:如果string的长度非0则为真

[ string1 = string2 ]:如果两个字符串相同则为真

[ string != string2 ]:如果两个字符串不相同则为真

shell脚本--语法_第3张图片

shell脚本--语法_第4张图片

测试条件之间也可以与、或、非逻辑运算:!表示逻辑反  -a表示逻辑与  -o表示逻辑或

shell脚本--语法_第5张图片

注意:如果上例中的_str变量事先没有定义,就会被shell展开为空字符串,则会造成测试条件的语法错误,所以应该把变量取值放在“”中。

if/then/elif/else/fi

分fi表示if语句块的结束

注意:1.如果两条命令在同一行需要用;号隔开

           2.命令和各参数之间必须用空格隔开

if命令的参数组成一条子命令,如果该子命令的Exit Status为0,则执行then后面的子命令,如果Exit Status非0,则执行elif、else、或者fi后面的子命令。

shell脚本--语法_第6张图片

: 是一个特殊的命令,称为空命令,该命令不做任何事,但Exit Status总是真。

shell脚本--语法_第7张图片shell脚本--语法_第8张图片

 &&相当于if...then...,||相当于if not...then...。

&&和||用于连接两个命令,-a和-o用于测试表达式中连接两个测试条件。

shell脚本--语法_第9张图片shell脚本--语法_第10张图片

shell脚本--语法_第11张图片shell脚本--语法_第12张图片

csae/esac

esac表示csae语句块的结束。c语言的case只能匹配整型或字符型常量表达式,shell脚本的case可以匹配字符串和Wildcard,每个分支可以有若干条命令,结尾必须;;结束,执行时找到第一个匹配的分支并执行相应的命令,然后直接跳 到esac之后,不需要像C语言一样用break跳出。

for/do/done

shell脚本--语法_第13张图片

while/do/done

shell脚本--语法_第14张图片

 

 

你可能感兴趣的:(shell脚本--语法)