我希望看到下面的片段
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发布于 2022-05-16 20:48:57
你可以试试这个:
until MY_VAR=$(echo my_var_val); test -n "$MY_VAR"
do
echo 'inside the loop'
done
echo $MY_VAR发布于 2022-05-16 15:49:21
[是一个普通的命令,而不是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
donehttps://stackoverflow.com/questions/72261897
复制相似问题