2012-12-28 47 views
0

这条线从一个循环应该添加三个串在一起将字符串赋值给Bash中的数组元素,语法错误?

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 

它看起来是包括=为第一部分串?

回答

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]} 

当设置一个变量,你永远要对一个变量的领先“$”,或者换一种说法,通常你不希望一个“$”就'='赋值的左边。

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

for drivecount in 1 2 3 ; do 
.... 

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

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

IHTH。