如何在bash脚本中修复数组错误?

时间:2013-11-17 15:29:36

标签: arrays linux bash shell syntax

这是一个我可以正常运行的bash脚本

#!/bin/bash
array=$(awk '{print $4}' /var/log/httpd/access_log | uniq -c | cut -d[ -f1)
sum=0 
sum1=0
arr=(${array[*]}) 
echo "After unquoted expansion: ${#arr[*]}"

for (( i=1; i<${#arr[@]}; i++ )); 
do 
sum=$( expr $sum - ${arr[$i]} ) 
sum1=$( expr $sum1 + $sum ) 
done 
echo 
echo "Sum of \$arr = ${sum1}" 
exit $sum

但是当我改变时

sum=$( expr $sum - ${arr[$i]} )

通过

sum=$( expr ${arr[$i+1]} - ${arr[$i]} )

j=$( expr $i + 1) sum=$( expr ${arr[$j]} - ${arr[$i]} )

它有错误:expr: syntax error

1 个答案:

答案 0 :(得分:2)

将shebang更改为#!/bin/bash -x以查看命令的执行方式,并查看expr失败时的参数。当你看到它时,你可能会自己知道答案。否则,请将其添加到您的帖子中。