Bash for循环检查多个变量以返回空变量的名称
我正在写一个bash脚本,我有一个var的列表Bash for循环检查多个变量以返回空变量的名称,bash,loops,for-loop,var,Bash,Loops,For Loop,Var,我正在写一个bash脚本,我有一个var的列表 var1="chicken" var2="sweet potatoe" var3="" var4="rice" 我想返回var本身的名称,它是空的 for var in var1 var2 var3 var4; do if [[ ! -n "$var" ]]; then echo "Fix that: $var ${!var}" fi done 这不算回报 相反的工作 for var in var1 var2 var3
var1="chicken"
var2="sweet potatoe"
var3=""
var4="rice"
我想返回var本身的名称,它是空的
for var in var1 var2 var3 var4; do
if [[ ! -n "$var" ]]; then
echo "Fix that: $var ${!var}"
fi
done
这不算回报
相反的工作
for var in var1 var2 var3 var4; do
if [[ -n "$var" ]]; then
echo "Fix that: $var ${!var}"
fi
done
我已经测试了几种方法来实现这一点,我想保持它非常简单,我想不出来
感谢您的帮助。使用变量间接寻址:
for var in var1 var2 var3 var4; do
[[ -z ${!var} ]] && echo empty: $var
done
OP运气不好,因为已经使用了
${!var}
的间接扩展,可能没有完全理解它的含义。请参阅:
empty: var3