3

我正在做一些shell脚本。

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

eval ${ARG}_ext=fastq

这很好用,因为我可以像这样直接使用那些新创建的变量:

$file_ext

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

extension=

分配的值应该是在变量 ${ARG}_ext 中找到的值。请问,我该怎么做?

我试过了

extension=eval ${ARG}_ext;

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

4

2 回答 2

5

尝试:

$ extension=$(eval "echo \$${ARG}_ext")
于 2013-04-03T14:28:46.323 回答
1

不是直接的答案,但您是否考虑过使用关联数组:

declare -A myhash
ARG=file
myhash[${ARG}_ext]='fastq'
extension="${myhash[${ARG}_ext]}"
echo "$extension"

请注意,如果在函数内使用 declare 会创建一个局部变量,因此如果您需要全局范围内的关联数组,请在全局范围内声明它。(最新版本的 bash 添加了 -g (全局)选项来声明解决了这个问题。)

于 2013-04-03T15:03:14.227 回答