if 语句中的 if 子shell 与复合语句有什么区别?

问题描述 投票:0回答:1

在bash脚本中,我需要运行一个命令,这是一个

&&
复合体,我想知道将它放在子shell中和在
if
条件下运行它有什么区别?

if ! ( cmd_A && cmd_B ); then
    doSth
fi

if ! cmd_A && cmd_B; then
    doSth
fi
bash shell
1个回答
0
投票

!
始终仅适用于一条管道。在第一个示例中,该管道是
(...)
命令。在第二个示例中,第一个管道
cmdA
构成了由 && 定义的
list
的第一部分。

如果您实际上并不需要子 shell,但仍想取消

cmdA && cmdB
的退出状态,请使用命令组:

if ! { cmdA && cmdB; }; then
    doSth
fi
© www.soinside.com 2019 - 2024. All rights reserved.