从名称取自另一个变量的变量中获取内容

时间:2013-04-03 14:19:48

标签: bash variables eval fastq

我正在做一些shell脚本。

我使用这种结构来创建新变量:

eval ${ARG}_ext=fastq

非常好用,因为我可以直接使用这些新创建的变量:

$file_ext

现在我想为名为extension的变量赋值:

extension=

指定的值应该是变量$ {ARG} _ext中的值。拜托,我该怎么做?

我试过了

extension=eval ${ARG}_ext;

但这给了我变量的名称,我想要它的值。感谢。

2 个答案:

答案 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(全局)选项来声明解决了这个问题。)