12.1.3. Shell 条件语句
每个命令都会返回 退出状态,这可以被条件语句使用。
成功:0 (“True”)
失败:非0 (“False”)
注意 | |
---|---|
“0” 在 shell 条件语句中的意思是 “True”,然而 “0” 在 C 条件语句中的含义为 “False”。 |
注意 | |
---|---|
“ |
如下所示是需要记忆的基础 条件语法。
“
<command> && <if_success_run_this_command_too> || true
““
<command> || <if_not_success_run_this_command_too> || true
“如下所示是多行脚本片段
if [ <conditional_expression> ]; then
<if_success_run_this_command>
else
<if_not_success_run_this_command>
fi
这里末尾的“|| true
”是需要的,它可以保证这个 shell 脚本在不小心使用了“-e
”选项而被调用时不会在该行意外地退出。
表 12.6. 在条件表达式中进行文件比较
表达式 | 返回逻辑真所需的条件 |
---|---|
-e <file> | <file> 存在 |
-d <file> | <file> 存在并且是一个目录 |
-f <file> | <file> 存在并且是一个普通文件 |
-w <file> | <file> 存在并且可写 |
-x <file> | <file> 存在并且可执行 |
<file1> -nt <file2> | <file1> 是否比 <file2> 新 |
<file1> -ot <file2> | <file1> 是否比 <file2> 旧 |
<file1> -ef <file2> | <file1> 和 <file2> 位于相同的设备上并且有相同的 inode 编号 |
表 12.7. 在条件表达式中进行字符串比较
表达式 | 返回逻辑真所需的条件 |
---|---|
-z <str> | <str> 的长度为零 |
-n <str> | <str> 的长度不为零 |
<str1> = <str2> | <str1> 和 <str2> 相等 |
<str1> != <str2> | <str1> 和 <str2> 不相等 |
<str1> < <str2> | <str1> 排列在 <str2> 之前(取决于语言环境) |
<str1> > <str2> | <str1> 排列在 <str2> 之后(取决于语言环境) |
算术整数的比较在条件表达式中为 “-eq
“,”-ne
“,”-lt
“,”-le
“,”-gt
“ 和 “-ge
“。