期望的操作数(错误标记为“+”):将数组元素值添加到数字变量时出现Bash错误

时间:2014-11-05 15:52:51

标签: arrays bash shell syntax-error

我一直在研究一个bash脚本来生成一个脚本,用于复制另一个(辅助)服务器上的数据库。

辅助主机上有6个位置将存储文件(因此for循环0 >= i >=5)。

脚本的主要目的是检查辅助主机的位置是否有足够的空间容纳将要复制的文件。

  • aux_dest_space是辅助主机上已安装位置的可用空间;文件的存储位置(数组)。
  • temp_space是文件大小(累计);为了在aux_dest_space满了后停止复制过程。
  • df_size是文件大小(存储在数组中)

错误消息:

./script.sh: line 108: 472879112 +  : syntax error: operand expected (error token is "+  ")
temp_space=$(( $temp_space + ${df_size[${k}]} ))  

我的代码:

for (( i=0; i<=5; i++ ))
do
      while [ ${aux_dest_space[${i}]} -gt $temp_space ]
      do
          .
          .
          .
          .
           k=$((k+1))
           temp_space=$(( $temp_space + ${df_size[${k}]} )) # (line 108 - error)
       done
       temp_space=${df_size[${k}]}
 done

2 个答案:

答案 0 :(得分:0)

在循环之前将$temp_space初始化为零:

temp_space=0
for (( i=0; i<=5; i++ ))
do
      while [ ${aux_dest_space[${i}]} -gt $temp_space ]
      do
          .
          .
          .
          .
           k=$((k+1))
           temp_space=$(( $temp_space + ${df_size[${k}]} )) # (line 108 - error)
       done
       temp_space=${df_size[${k}]}
 done

答案 1 :(得分:0)

temp_space=0
for (( i=0; i<=5; i++ ))
do
      while [ ${aux_dest_space[${i}]} -gt $temp_space ]
      do
          .
          .
          .
          .
          k=$((k+1))
          temp_space=$(( temp_space + df_size[${k}] )) # (line 108 - error)
      done
      temp_space=${df_size[${k}]}
done

我不得不从第108行删除美元符号和大括号;这给了错误。