我想有條件地將文本提交到另一個 shell 腳本中。這意味著我想在 deb=1 的情況下用“INFO”替換“WARNING”:
#!/usr/bin/env bash
...
if [[ $abc -lt 98 ]] || [[ $deb -eq 1 ]]
then
./discord.sh --webhook-url=$url --text "WARNING: $abc"
fi
我也想避免另一個完整的 IF 陳述句。我希望有類似的東西
deb=1 ? "INFO" : "WARNING"
那樣有用嗎?如果是,完整的陳述會是什么樣的?“ - 文本 ...”
先感謝您。
uj5u.com熱心網友回復:
可以使用陣列索引來匹配數字日志級別和名稱字串:
#!/usr/bin/env bash
url=https://example.com/hook
logLevel=(WARNING INFO)
for abc in 97 98; do
for deb in 0 1; do
printf 'abc=%d, deb=%d:\n' $abc $deb
(((i = 1 == deb) || 98 > abc)) &&
echo ./discord.sh --webhook-url=$url --text "${logLevel[i]}: $abc"
done
done
輸出:
abc=97, deb=0:
./discord.sh --webhook-url=https://example.com/hook --text WARNING: 97
abc=97, deb=1:
./discord.sh --webhook-url=https://example.com/hook --text INFO: 97
abc=98, deb=0:
abc=98, deb=1:
./discord.sh --webhook-url=https://example.com/hook --text INFO: 98
uj5u.com熱心網友回復:
你的意思是這樣的?
[[ $abc -lt 98 ]] && {
./discord.sh --webhook-url=$url --text "$([[ $deb -eq 1 ]] && echo "INFO" || echo "WARNING"): $abc"
}
將此視為替代if then else fi(僅當您有更多命令時才需要大括號,但我還是喜歡使用它,以提高可讀性(在某些情況下)。
基本上是
[[ condition ]] && { commands if true } || { commands if false }
uj5u.com熱心網友回復:
請你試試:
if (( abc < 98 || deb == 1 )); then
loglevel=$( (( deb == 1 )) && echo "INFO" || echo "WARNING" )
./discord.sh --webhook-url=$url --text "$loglevel: $abc"
fi
uj5u.com熱心網友回復:
恕我直言,@tshiono 的答案是最好的。但是,它變得難以閱讀/除錯。
為什么不使用詳細的解決方案?
當兩個條件都為真時,您希望使用 INFO 登錄。
if ((deb==1 )); then
./discord.sh --webhook-url="$url" --text "INFO: $abc"
elif ((abc < 98)); then
./discord.sh --webhook-url="$url" --text "WARNING: $abc"
fi
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/362986.html
下一篇:選項的完整引數
