在bash脚本中,我需要运行一个命令,这是一个
&&
复合体,我想知道将它放在子shell中和在if
条件下运行它有什么区别?
if ! ( cmd_A && cmd_B ); then
doSth
fi
与
if ! cmd_A && cmd_B; then
doSth
fi
!
始终仅适用于一条管道。在第一个示例中,该管道是 (...)
命令。在第二个示例中,第一个管道 cmdA
构成了由 &&
定义的 list的第一部分。
如果您实际上并不需要子 shell,但仍想取消
cmdA && cmdB
的退出状态,请使用命令组:
if ! { cmdA && cmdB; }; then
doSth
fi