Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何修复bash脚本中的数组错误?_Arrays_Linux_Bash_Shell_Syntax - Fatal编程技术网

Arrays 如何修复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

这是一个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


它有错误:
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]} )