标签:shell
条件测试——test 或[
命令“test”或“[”可以测试一个条件是否成立,如果测试结果为真,则该命令的退出码为0,如果测试结果为假,则命令的退出码为1。
常见测试命令举例:
note:左方括号[是一个命令的名字,传给命令的各参数之间应该用空格隔开,比如,$VAR、-gt、3、]是[命令的四个参数,它们之间必须用空格隔开。命令test或[的参数 形式是相同的,只不过test命令不需要]参数。
与、或、非的测试命令
[ ! EXPR ] : EXPR可以是上述中的任意一种测试条件,!表示逻辑反
[ EXPR1 -a EXPR2 ] : EXPR1和EXPR2可以是上述中的任意一种测试条件,-a表示逻辑与
[ EXPR1 -o EXPR2 ] :EXPR1和EXPR2可以是上述中的任意一种测试条件,-o表示逻辑或
note:如果上例中的$string变量事先没有定义,则被Shell展开为空字符串,会造成测试条件的语 法错误(展开为[ -d Desktop -a = ‘abc‘ ]),作为一种好的Shell编程习惯,应该总是把变量取值放在双引号之中(展开为[ -d Desktop -a "" = ‘abc‘ ])。
if/then/elif/else/fi
和C语言类似,在Shell中用if、then、elif、else、这几条命令实现分支控制。
note:如果两条命令写在同行则需要用;号隔开,一行只写、一条命令就不需要写;号了,另外,then后面有换行, 但这条命令没写完,Shell会自动续行,把下一行接在then后面当作一条命令处理。
:是一个特殊的命令,称为空命令,该命令不做任何事,但Exit Status总是真。
也可以用&&和||来进行上述操作。&&相当于“if...then...”,而||相当于“if not...then...”。
case/esac
case命令可类比C语言的switch/case语句,esac表示case语句块的结束。C语言的case只能匹配 整型或字符型常量表达式,而Shell脚本的case可以匹配字符串和Wildcard,每个匹配分支可以有若干条命令,末尾必须以;;结束,执行时找到第一个匹配的分支并执行相应的命令,然后直接跳到esac之后,不需要像C语言一样用break跳出。
for/do/done
Shell脚本的for循环结构和C语言很不一样,它类似于某些编程语言的foreach循环。
类C方式书写
while/do/done
本文出自 “七月朔风” 博客,请务必保留此出处http://luminous.blog.51cto.com/10797288/1836790
标签:shell
原文地址:http://luminous.blog.51cto.com/10797288/1836790