我对如何在shell中处理变量赋值感到困惑
例如:
var=demo
foo=$var
$ var将被扩展,$ foo将是" demo"。
但如果写为:
count=0
a_${count}=filename
bash报告: a_0 = filename:找不到命令
从错误消息中,我们知道_ $ {count}已扩展为a_0,那么为什么变量赋值无法正常工作?我发现如果以另一种方式写作:
count=0
filename=a_${count}
一切都会好的,这些之间有什么区别?
答案 0 :(得分:0)
你不能在变量赋值的左侧有一个表达式。
您可以改为使用declare
:
declare a_${count}=filename
然后验证:
echo "$a_0"
filename
答案 1 :(得分:0)
问题是变量赋值在扩展之前发生,如果可能的话。如果不是,a_$count=filename
将被扩展并被理解为要运行的命令。您可以使用declare
:
declare a_$count=filename