这是一个我可以正常运行的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
答案 0 :(得分:2)
将shebang更改为#!/bin/bash -x
以查看命令的执行方式,并查看expr
失败时的参数。当你看到它时,你可能会自己知道答案。否则,请将其添加到您的帖子中。