我正在做一些shell脚本。
我使用这种结构来创建新变量:
eval ${ARG}_ext=fastq
非常好用,因为我可以直接使用这些新创建的变量:
$file_ext
现在我想为名为extension的变量赋值:
extension=
指定的值应该是变量$ {ARG} _ext中的值。拜托,我该怎么做?
我试过了
extension=eval ${ARG}_ext;
但这给了我变量的名称,我想要它的值。感谢。
答案 0 :(得分:5)
尝试:
$ extension=$(eval "echo \$${ARG}_ext")
答案 1 :(得分:1)
不是直接的答案,但您是否考虑过使用关联数组:
declare -A myhash
ARG=file
myhash[${ARG}_ext]='fastq'
extension="${myhash[${ARG}_ext]}"
echo "$extension"
请注意,如果在函数内使用,declare会创建一个局部变量,因此如果全局需要,则声明全局范围内的关联数组。 (最新版本的bash添加了一个-g(全局)选项来声明解决了这个问题。)