如何使命令子集有条件?

如何使命令子集有条件?

我无法找到问题的直接答案,也许是因为我不知道如何表达它或正确的术语。

我正在寻找如何使链中的命令子集成为“或者”

A && B && (C || D) && E && F

前一个命令的结果决定下一个命令是否触发。

在本例中它是一个chef命令

knife vault create

这会导致在尝试创建已存在的保管库时出现中断错误问题。所以我想做

knife vault update

如果 knife vault create脚本出现错误

这是一个更大的概述

command1 && \
command2 && \
(knife vault create
or
knife vault update) && \
command4 && \
continuing...

由于到目前为止,我制作的脚本中的情况很少 (1),所以我想保留格式,而不是突然以if/else或“更高级”的内容开始。

答案1

command1 &&
command2 &&
{ knife vault create ||
knife vault update; } &&
command4 &&
# ...

例子:

echo command1 &&
echo command2 &&
{ echo knife vault create ||
echo knife vault update; } &&
echo command4 &&
exit

输出:

command1
command2
knife vault create
command4

echo command1 &&
false &&
{ echo knife vault create ||
echo knife vault update; } &&
echo command4 &&
exit

输出:

command1

if声明:

if echo command1 && false; then
    echo knife vault create ||
    echo knife vault update &&
    echo command4 &&
    exit
fi

相关内容