Bash

如何使命令子集成為有條件的?

  • February 20, 2020

我在尋找問題的直接答案時遇到問題,可能是因為我不知道如何表達它或正確的術語。

我正在尋找如何使鏈中的命令子集成為“或者”

如在

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或“更高級”的東西開頭。

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

引用自:https://unix.stackexchange.com/questions/568507