上一个命令执行完后,退出时返回的状态值。html
0
表示成功;非0
表示失败。正则表达式
在命令行中能够打印查看上一个状态值express
$ echo $?
until 的语法:bash
until test-commands; do consequent-commands; done
while 的语法命令行
while test-commands; do consequent-commands; done
if 的语法code
if test-commands; then consequent-commands; [elif more-test-commands; then more-consequents;] [else alternate-consequents;] fi
test-commands
执行以后,if
、until
、while
依赖于它的 exit status
:htm
;
, &
, &&
, 或 ||
分隔,;
, &
, 或 换行
结束;exit status
由最后一组管道的 exit status
决定;|
或 |&
分隔,由最后一个命令的 exit status
决定管道的 exit status
;通常而言,单个命令执行成功,状态值为0。get
// 文件test #!/usr/bin/bash if ls;ls;then echo ==111== else echo ==222== fi if ls;lss;then echo ==333== else echo ==444== fi $ ./test test test_1 test1 test test_1 test1 ==111== test test_1 test1 ./test: line 8: lss: command not found ==444==
同 let "expression"
。it
加减乘除等,计算出来的值为0,exit status
值为1;计算出来的值为非0,exit status
值为0;io
// 文件 test #!/usr/bin/bash if ((1+1));then echo ==111== else echo ==222== fi if ((1-1));then echo ==333== else echo ==444== fi $ ./test ==111== ==444==
// 文件 test #!/usr/bin/bash if [[ str1 == str* ]];then echo ==111== else echo ==222== fi if [[ 'str1' = 'str2' ]];then echo ==333== else echo ==444== fi $ ./test ==111== ==444==
同 test 表达式
,相似 [[ 条件表达式 ]]
// 文件 test #!/usr/bin/bash if [ str1 == str* ];then echo ==111== else echo ==222== fi if [ 'str1' = 'str2' ];then echo ==333== else echo ==444== fi $ ./test ==222== ==444==
[[]]
中,不会进行分词、文件名扩展。[[]]
中,==
和 !=
右侧的操做数,被当作是正则表达式。(=
等同于 ==
)