bash shell if语句用法
if your_command; then.. 会现执行your_command,如果返回值为0,则会执行then后的语句;
否则会执行后面的elif或者else后的语句。
if g++ -v > /dev/null 2>&1; then
echo "OK"
else
echo "failed. Install the "GNU C++ compiler"!"
exit 1
fi
#the above and the below have the same function
g++ -v > /dev/null 2>&1
if [ $? = 0 ]; then
echo "OK"
else
echo "failed. Install the "GNU C++ compiler"!"
exit 1
fi
shell if else语句
和Java、PHP等语言不一样,sh的流程控制不可为空,例如:
在sh/bash里可不能这么写,如果else分支没有语句执行(shell条件判断语句),就不要写这个else,就像这样:
当然,也可以写成一行(适用于终端命令提示符),像这样:
if test $[2*3] -eq $[1+5]; then echo 'The two numbers are equal!'; fi
末尾的fi就是if倒过来拼写,后面还会遇到类似的。
if else格式
if condition
then
command1
command2
...
commandN
else
command
fi
if else-if else格式
if condition1
then
command1
elif condition2
command2
else
commandN
fi
if else语句经常与test命令结合使用,如下所示:
输出:
The two numbers are equal!
Shell case语句
Shell case语句为多选择语句。可以用case语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。
case语句格式如下:
case工作方式如上所示。取值后面必须为单词in,每一模式必须以右括号结束。取值可以为变量或常数。匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;。
取值将检测匹配的每一个模式。一旦模式匹配,则执行完匹配模式相应命令后不再继续其他模式。如果无一匹配模式,使用星号 * 捕获该值,再执行后面的命令。
以下脚本提示输入1到4,与每一种模式进行匹配:
输入不同的内容,会有不同的结果,例如:
Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。
数值测试
例如:
输出:
The two numbers are equal!
字符串测试
参数 说明
= 等于则为真
!= 不相等则为真
-z 字符串 字符串长度伪则为真
-n 字符串 字符串长度不伪则为真
例如:
输出:
The two strings are equal!
文件测试
例如:
输出:
The file already exists!
另外,Shell还提供了与( ! )、或( -o )、非( -a )三个逻辑操作符用于将测试条件连接起来,其优先级为:“!”最高,“-a”次之,“-o”最低。例如:
输出:
One file exists at least!