在Bash中为字符串分配字符串,语法错误?

时间:2012-12-28 02:19:32

标签: bash syntax scripting

循环中的这一行应该将三个字符串加在一起

for each $drivecount
${drives[$drivecount]}=${info[$count+1]}" "${info[$count+2]}" "${info[$count+3]}

以下是我遇到的错误:

./erasehd.sh: line 17: =/dev/sda: 80.0 GB: No such file or directory

看起来它包含=作为第一个字符串的一部分?

1 个答案:

答案 0 :(得分:2)

./erasehd.sh: line 17: =/dev/sda: 80.0 GB: No such file or directory

不,它忽略前面的未声明变量并尝试执行=/dev/sda...作为命令。 ;-) ....你想要

for each $drivecount
drives[$drivecount]=${info[$count+1]}" "${info[$count+2]}" "${info[$count+3]}

设置变量时,你永远不会想要一个变量的前导'$',或换另一种方式,通常你不想在'='赋值的左侧有'$'。 / p>

我不熟悉bash中的for each构造。你确定这是对的吗?我期待像

这样的东西
for drivecount in 1 2 3 ; do
 ....

最后,您包含的语法用于引用与赋值无关的数组元素。

for dc in 1 2 3 ; do
  echo ${drives[$dc]}
done

IHTH。