在 Shell 脚本中,&& 和 || 是逻辑运算符,用于控制命令的执行顺序和条件判断。它们的作用是将命令的执行结果与前一个命令的结果进行关联,从而实现条件判断或命令顺序控制。
一、&& 的作用
&& 表示“如果前一个命令成功执行(返回状态码为 0),则执行下一个命令”。
示例:
ls /tmp && echo "目录存在"
- 如果
ls /tmp成功(返回 0),则执行echo "目录存在"。 - 如果
ls /tmp失败(返回非 0),则不执行echo。
扩展:
ls /tmp && echo "目录存在" && echo "继续执行"
- 只有在
ls /tmp成功时,才会执行后续命令。
二、|| 的作用
|| 表示“如果前一个命令失败(返回非 0),则执行下一个命令”。
示例:
ls /tmp || echo "目录不存在"
- 如果
ls /tmp失败(返回非 0),则执行echo "目录不存在"。 - 如果
ls /tmp成功,则不执行echo。
扩展:
ls /tmp || echo "目录不存在" || echo "其他处理"
- 只有在
ls /tmp失败时,才会执行后续命令。
三、&& 和 || 的对比
| 运算符 | 表示含义 | 适用场景 |
|---|---|---|
&& |
如果前一个命令成功,执行下一个命令 | 命令顺序控制,只有前一个命令成功时才执行后续命令 |
|| |
如果前一个命令失败,执行下一个命令 | 命令条件判断,只有前一个命令失败时才执行后续命令 |
四、总结
| 运算符 | 作用 | 示例 |
|---|---|---|
&& |
命令顺序控制 | command1 && command2 |
|| |
命令条件判断 | command1 || command2 |
五、常见使用场景
ls /tmp && echo "目录存在":检查目录是否存在,存在则输出信息。grep "pattern" file || echo "未找到":查找文件中是否有匹配内容,没有则输出提示。
如需进一步了解这些运算符在脚本中的具体使用方式,或者想了解如何将它们用于更复杂的条件判断,欢迎继续提问!
