34. 用 || 组合多个命令
||
称为 OR
列表结构,用于执行一系列命令中的一个命令。
仅当前一个命令失败(即返回非零状态)时,才会执行 or
列表中的下一个命令。||
的行为与&&
正好相反。
语法:
command1 || command2 || command3 || ..
- 如果 command1 执行成功(返回状态0),bash不会执行 command2 或 command3
- 如果 command1 失败(返回非零状态),则执行 command2。
- 如果 command2 成功执行,bash 不会执行 command3。
- 如果 command2 失败,则执行 command3。
以下示例有 5 个命令,以||
分隔。 但是,由于 command1 已成功执行,因此该列表中的其余命令将永远不会被执行。
$ ls -ld /etc \
|| x=10 \
|| echo "value of x is: $x" \
|| pwd \
|| echo "finished"
drwxr-xr-x. 86 root root 4096 Apr 28 06:37 /etc
OR
列表的一个很好的用途是替换简单的if !
语句:
if [ ! -f /.datafile ]
then
touch /.datafile
fi
下面的代码片段与上面的代码片段完全相同。
[ -f /.datafile ] || touch /.datafile
||
的另一种用法 就是当必要的操作失败时以适当的状态退出 shell 脚本,如下所示。
touch /tmp/temp.dat || { echo 'Unable to create /tmp/temp.dat file' >&2; exit 1; }