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