Arrays 如何修复bash脚本中的数组错误?
这是一个bash脚本,我可以正常运行它Arrays 如何修复bash脚本中的数组错误?,arrays,linux,bash,shell,syntax,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 - ${a
#!/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
借
或
它有错误:
expr:syntax error
将shebang更改为#/bin/bash-x
查看命令的执行方式,以及在失败时查看expr
的参数。当你看到它时,你自己可能知道答案。否则,请将其添加到您的帖子。将shebang更改为#/bin/bash-x
查看命令的执行方式,以及在失败时查看expr
的参数。当你看到它时,你自己可能知道答案。否则,请将其添加到您的帖子中。array
的赋值不是数组赋值!当我使用#/bin/bash-x,我看到了问题所在。非常感谢@janos。您可以使用sum=$(${arr[$i+1]}-${arr[$i]})进行算术扩展,而不是使用expr
。您也可以使用let
。。。
sum=$( expr $sum - ${arr[$i]} )
sum=$( expr ${arr[$i+1]} - ${arr[$i]} )
j=$( expr $i + 1) sum=$( expr ${arr[$j]} - ${arr[$i]} )