如何在bash shell中处理变量赋值?

时间:2014-08-01 16:38:44

标签: bash shell

我对如何在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}

一切都会好的,这些之间有什么区别?

2 个答案:

答案 0 :(得分:0)

你不能在变量赋值的左侧有一个表达式。

您可以改为使用declare

declare a_${count}=filename

然后验证:

echo "$a_0"
filename

答案 1 :(得分:0)

问题是变量赋值在扩展之前发生,如果可能的话。如果不是,a_$count=filename将被扩展并被理解为要运行的命令。您可以使用declare

将其作为延迟分配的命令
declare a_$count=filename