bash(if、until、while中的test-commands)
exit status
上一个命令执行完后,退出时返回的状态值。
0
表示成功;非0
表示失败。
在命令行中可以打印查看上一个状态值
$ echo $?
依赖于 exit status 的 if、until、while
- until 的语法:
until test-commands; do consequent-commands; done
- while 的语法
while test-commands; do consequent-commands; done
- if 的语法
if test-commands; then consequent-commands; [elif more-test-commands; then more-consequents; ] [else alternate-consequents; ] fi
test-commands
执行之后,if
、until
、while
依赖于它的 exit status
:- 为 0 时,if 执行;
- 为 1 时,until 执行;
- 为 0 时,while 执行。
- 多组管道之间可以由
;
,&
,&&
, 或||
分隔, - 由
;
,&
, 或换行
结束; exit status
由最后一组管道的exit status
决定;- 一个或多个命令组成一个管道,由
|
或|&
分隔,由最后一个命令的exit status
决定管道的exit status
; - 一般而言,单个命令执行成功,状态值为0。
// 文件test #!/usr/bin/bash if ls; ls; then echo ==111== else echo ==222== fiif ls; lss; then echo ==333== else echo ==444== fi$ ./test testtest_1test1 testtest_1test1 ==111== testtest_1test1 ./test: line 8: lss: command not found ==444==
同
let "expression"
。加减乘除等,计算出来的值为0,
exit status
值为1;计算出来的值为非0,exit status
值为0;// 文件 test
#!/usr/bin/bash
if ((1+1));
then
echo ==111==
else
echo ==222==
fiif ((1-1));
then
echo ==333==
else
echo ==444==
fi$ ./test
==111==
==444==
[[ 条件表达式 ]] 组成 test-commands
// 文件 test
#!/usr/bin/bash
if [[ str1 == str* ]];
then
echo ==111==
else
echo ==222==
fiif [[ 'str1' = 'str2' ]];
then
echo ==333==
else
echo ==444==
fi$ ./test
==111==
==444==
[ 条件表达式 ] 组成 test-commands
【bash(if、until、while中的test-commands)】同
test 表达式
,类似 [[ 条件表达式 ]]
// 文件 test
#!/usr/bin/bash
if [ str1 == str* ];
then
echo ==111==
else
echo ==222==
fiif [ 'str1' = 'str2' ];
then
echo ==333==
else
echo ==444==
fi$ ./test
==222==
==444==
[[]] 与 [] 的区别
- 在
[[]]
中,不会进行分词、文件名扩展。 - 在
[[]]
中,==
和!=
右侧的操作数,被当做是正则表达式。(=
等同于==
)
- Bash Reference Manual:https://www.gnu.org/software/...
推荐阅读
- 一个人的碎碎念
- 野营记-第五章|野营记-第五章 讨伐梦魇兽
- Shell-Bash变量与运算符
- 清明,是追思、是传承、是感恩。
- 牛人进化+|牛人进化+ 按自己的意愿过一生
- 七老修复好敏感、角质层薄、红血丝
- 华为旁!大社区、地铁新盘,佳兆业城市广场五期!
- 标签、语法规范、内联框架、超链接、CSS的编写位置、CSS语法、开发工具、块和内联、常用选择器、后代元素选择器、伪类、伪元素。
- 螃蟹和这些食物同吃,轻则腹泻、重则中毒!要小心哦~
- 八、「料理风云」