如何动态生成新的 var 名称

pQB*_*pQB 5 bash shell-script variable-substitution

我正在尝试在 shell 脚本中生成动态 var 名称,以循环处理一组具有不同名称的文件,如下所示:

SAMPLE1='1-first.with.custom.name'
SAMPLE2='2-second.with.custom.name'

for (( i = 1; i <= 2; i++ ))
do
  echo SAMPLE{$i}
done
Run Code Online (Sandbox Code Playgroud)

我希望输出:

1-first.with.custom.name
2-second.with.custom.name
Run Code Online (Sandbox Code Playgroud)

但我得到了:

SAMPLE{1}
SAMPLE{2}
Run Code Online (Sandbox Code Playgroud)

是否可以即时生成 var 名称?

pQB*_*pQB 5

我发现我可以得到预期的结果如下:

for (( i = 1; i <= 2; i++ ))
do
  NEW_NAME=SAMPLE$i
  echo ${!NEW_NAME}
done
Run Code Online (Sandbox Code Playgroud)


jip*_*pie 5

为什么不使用数组,它们是用来做这样的事情的。

sample[1]='1-first.with.custom.name'
sample[2]='2-second.with.custom.name'

for (( i = 1; i <= 2; i++ ))
do
  echo ${sample[$i]}
done
Run Code Online (Sandbox Code Playgroud)

也不要在脚本中使用全大写的变量名,以防止意外使用保留变量名。