我期待以下片段
until [ MY_VAR=$(echo my_var_val) ]
do
echo 'inside the loop'
done
echo $MY_VAR
來產生my_var_val輸出。但是,這不會發生。我怎樣才能做到這一點?
很長的故事
我想對產生一些輸出的腳本執行重試。我需要稍后在腳本中輸出。不幸的是,在直到測驗中分配變數值失敗 - 當我稍后在腳本中嘗試使用它時,變數具有空值。如何使用重試邏輯執行外部腳本并將其輸出存盤在一個變數中,以便稍后在腳本中使用?
max_retry=10
counter=0
until [ IMPORTANT_SCRIPT_OUTPUT=$(python very_important_script_with_output.py) ]
do
#retry logic
if [[ counter -eq $max_retry ]]; then
echo "Failed"
exit 1
fi
((counter ))
echo "very_important_script_with_output failed, retrying"
done
python another_very_important_script_with_the_previous_script_output_as_parameter.py --important-parameter $IMPORTANT_SCRIPT_OUTPUT
uj5u.com熱心網友回復:
你可以試試這個:
until MY_VAR=$(echo my_var_val); test -n "$MY_VAR"
do
echo 'inside the loop'
done
echo $MY_VAR
uj5u.com熱心網友回復:
[是一個普通的命令,不是shell語法,它的引數被正常處理。所以MY_VAR=$(echo my_var_val)只是一個以 開頭的字串MY_VAR=,而不是變數賦值。
與測驗變數分開進行分配。
while :
do
MY_VAR=$(command)
if [[ -n "$MY_VAR" ]]
then break
fi
echo 'inside the loop
done
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/476684.html
標籤:重击
