我有以下代碼(簡化):
if ! sudo -u user command1 "$Options" -o1 -o2 2>>"$log" > "$Dir"/output;
但是,在某些情況下(在運行時確定,如果變數 docker 設定為 true),我反而想執行
if ! docker exec -t "$cont" command2 "$Options" -o1 -o2 2>>"$log" > "$Dir"/output;
改變的是呼叫命令的方式(1 或 2)。其余引數保持不變。
所以我想引數化對 command1 或 command2 的呼叫。
就像是
if $docker then;
Command = docker exec -t "$cont" command2
else
Command = sudo -u user command1
if ! $Command "$Options" -o1 -o2 2>>"$log" > "$Dir"/output;
這不起作用。是否有可能在不訴諸于我的情況下實作我想要的eval,我認為這是一種不好的做法?
謝謝
uj5u.com熱心網友回復:
您可以使用陣列來保存特定于命令的部分,并依靠分詞來構建整個命令列來運行。就像是
#!/usr/bin/env bash
# Set up your assorted variables used below
if $docker; then
cmd=(docker exec -t "$cont" command2)
else
cmd=(sudo -u user command1)
fi
if ! "${cmd[@]}" "$Options" -o1 -o2 2>>"$log" > "$Dir"/output; then
# etc.
fi
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/393523.html
標籤:猛击
