嗨,伙計們,我想知道||在宣告變數時是如何作業的?你可以在下面代碼的第三行看到這個問題。$output被設定為一個函式,然后$error變數被設定為||之后的前一個命令的退出代碼。在這種情況下,||會做什么/如何處理?
if [ "$ENABLED"/span> = "yes"/span> ] || ["$ENABLED" = "yes" ]; then
log_action_begin_msg "啟動防火墻:" "ufw"
output=`ufw_start` || error="$?" <-- 這里
if [ "$error" = "0" ] ; then
log_action_cont_msg "設定內核變數($IPT_SYSCTL)"/span>
fi
if [ ! -z "$output" ]; then
echo "$output" | while read line ; do
log_action_cont_msg "$line"。
done
fi
else
log_action_begin_msg "跳過啟動防火墻:" "ufw(未啟用)"
fi
uj5u.com熱心網友回復:
就像&&一樣,||是一個bash控制運算子:&&意味著只有在前面的陳述句成功執行(回傳退出代碼為0)的情況下才執行后面的陳述句。||表示只有在前面的陳述句執行失敗(回傳非零的退出代碼)時,才執行后面的陳述句。
uj5u.com熱心網友回復:
一般來說,賦值的退出狀態是0,但是當有命令替換時,退出狀態是命令替換的退出狀態,在這個例子中是ufw_start。
因此,如果ufw_start失敗了,它的非零退出狀態被存盤在變數error中。
另外,由于error只用于查看其值是否為0,所以可以完全取消。
if output=$(ufw_start); then
log_action_cont_msg "..."/span>
fi
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/308001.html
標籤:
上一篇:這些查詢能否用子查詢合并成一個?
