Bash脚本遍历布尔变量时如何获取变量名称字符串而非其值
解决方案
你原来的写法问题在于循环时直接取了变量的值,自然无法获取变量名本身。你可以按下面的方式修改,用到Bash的间接变量扩展特性来实现需求:
修改后的代码
for bool in jobdummyjob1 jobdummyjob2 jobdummyjob3 do # 间接获取对应变量的布尔值 current_val="${!bool}" echo "Boolean Value of $bool is $current_val" if "$current_val" ; then echo "$alljobs" curl -X POST "https://jenkins.xxxxxxxxx.com/job/$bool/build" --user xxxxxxx.yyyyyyy@xxxxxx.com:ewfwedf3f234523555235235235235235 fi done
核心修改点
- 循环的遍历对象改为纯变量名字符串,不要加
$前缀,这样每次循环拿到的$bool就是你需要填入URL的任务名称 - 通过
${!bool}的间接扩展语法,拿到该变量名对应的实际布尔值用于条件判断 - 条件判断用取出的布尔值,URL拼接直接使用
$bool即可得到变量名字符串
内容的提问来源于stack exchange,提问作者Vesselin Tonchev
相关产品推荐
相关产品推荐

