我一直在研究一个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
答案 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行删除美元符号和大括号;这给了错误。