我想扩展一个参数两次,而${$PARAM}
不起作用。在Bash脚本中双参数扩展
例如,如果设置了两个变量为文件名,然后希望通过这些变量循环,并扩大到它们的文件名:
我怎样才能到从这些参数访问的文件名for循环?
即,扩大到input1.inp
和input2.inp
。
我想扩展一个参数两次,而${$PARAM}
不起作用。在Bash脚本中双参数扩展
例如,如果设置了两个变量为文件名,然后希望通过这些变量循环,并扩大到它们的文件名:
我怎样才能到从这些参数访问的文件名for循环?
即,扩大到input1.inp
和input2.inp
。
你已经差不多:只需使用"${!input_param}"
而不是${$input_param}
。
在这种情况下,引用不起作用,但这是一个好习惯。
双引号–扩展到每个变量名不同的字之间使用时要注意的差异来${[email protected]}
,这–,而"${!INPF_*}"
没有。你几乎总是想要"${[email protected]}"
。看到区别:
$ for var in "${!INPF_*}"; do echo "$var"; done
INPF_1 INPF_2
$ for var in "${[email protected]}"; do echo "$var"; done
INPF_1
INPF_2
查看manual的各种参数展开。
如果您使用单个阵列,这会更容易。 'infp =(input1.inp input2.inp)' –
不过,您要做的事情叫做间接扩展。我们已经有覆盖它的问题和答案。 –