首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将命令替换输出分配给内部的变量,直到测试。

将命令替换输出分配给内部的变量,直到测试。
EN

Stack Overflow用户
提问于 2022-05-16 15:41:33
回答 2查看 25关注 0票数 0

我希望看到下面的片段

代码语言:javascript
复制
until [ MY_VAR=$(echo my_var_val) ]
do
 echo 'inside the loop'
done 

echo $MY_VAR

以产生my_var_val输出。然而,这种情况并没有发生。我怎样才能做到这一点?

长篇小说

我想对产生某些输出的脚本执行重试。我需要脚本后面的输出。不幸的是,在“直到测试”中分配变量值失败了--当我稍后尝试在脚本中使用该变量时,该变量有空值。如何使用重试逻辑执行外部脚本,并将其输出存储在以后可以在脚本中使用的变量中?

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-05-16 20:48:57

你可以试试这个:

代码语言:javascript
复制
until MY_VAR=$(echo my_var_val); test -n "$MY_VAR"
do
 echo 'inside the loop'
done 

echo $MY_VAR
票数 1
EN

Stack Overflow用户

发布于 2022-05-16 15:49:21

[是一个普通的命令,而不是shell语法,它的参数是正常处理的。所以MY_VAR=$(echo my_var_val)只是一个以MY_VAR=开头的字符串,而不是变量赋值。

与测试变量分开执行赋值。

代码语言:javascript
复制
while :
do
    MY_VAR=$(command)
    if [[ -n "$MY_VAR" ]]
    then break
    fi
    echo 'inside the loop
done
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72261897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档