我无法找到问题的直接答案,也许是因为我不知道如何表达它或正确的术语。
我正在寻找如何使链中的命令子集成为“或者”
如
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