如何在Shell脚本中动态生成新的变量名?
我正在尝试在Shell脚本中生成动态var名称,以在循环中如下处理一组具有不同名称的文件:
#!/bin/bashSAMPLE1='1-first.with.custom.name'
SAMPLE2='2-second.with.custom.name'
for (( i = 1; i <= 2; i++ ))
do
echo SAMPLE{$i}
done
我期望输出:
1-first.with.custom.name2-second.with.custom.name
但我得到了:
SAMPLE{1}SAMPLE{2}
是否可以即时生成var名称?
回答:
您需要利用变量间接:
SAMPLE1='1-first.with.custom.name'SAMPLE2='2-second.with.custom.name'
for (( i = 1; i <= 2; i++ ))
do
var="SAMPLE$i"
echo ${!var}
done
在Bash手册页的 “参数扩展”下:
“如果参数的第一个字符是感叹号(!),则会引入变量间接级别。Bash使用从参数其余部分形成的变量的值作为变量的名称;然后对该变量进行扩展,然后在替换的其余部分中使用value,而不是参数本身的值。这称为间接扩展。”
以上是 如何在Shell脚本中动态生成新的变量名? 的全部内容, 来源链接: utcz.com/qa/433439.html