这是我的bash案例:
第一种情况,这就是我想用myvara做的“别名”var:
myvara="variableA"
varname="A"
eval varalias=\$"myvar"$varname
echo $varalias
数组变量的第二种情况并循环其成员,这是微不足道的:
myvara=( "variableA1" "variableA2" )
for varItem in ${myvara[@]}
do
echo $varItem
done
现在不知怎的,我需要像示例1那样使用“别名”技术,但这次是对于数组变量:
eval varalias=\$"myvar"$varname
for varItem in ${varalias[@]}
do
echo $varItem
done
但是对于最后一种情况,只打印myvara的第一个成员,这是eval评估变量的值,我应该怎么做var数组变量,因此eval被评估为数组变量的名称而不是变量的值.
解决方法:
参数扩展的最简单形式是:${parameter}.
在困惑的情况下使用大括号是更好的方法.
考虑到在“myvara”数组中包含空格的可能性,我认为这将是答案.
#!/bin/bash -x
myvara=( "variable A1" "variable A2" )
varname="A"
eval varalias=( '"${myvar'${varname}'[@]}"' )
eval varalias=( \"\${myvar${varname}[@]}\" ) # both works
for varItem in "${varalias[@]}" # double quote and `@' is needed
do
echo "$varItem"
done
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。