bash – 一个简单的小shell脚本来计算平均值
发布时间:2020-12-15 22:31:38 所属栏目:安全 来源:网络整理
导读:谁能告诉我这里我做错了什么? #!/bin/shif [ $# = 0 ]then echo "Usage: $0 filename" exit 1fisum=0count=0while [ $0 != 0 ]do sum="$sum"+"$2" count="$count"+ 1doneif [ "$count" != 0 ]then avg="$sum"/"$count" printf "Sum= $sum n Count= $count
谁能告诉我这里我做错了什么?
#!/bin/sh if [ $# = 0 ] then echo "Usage: $0 <filename>" exit 1 fi sum=0 count=0 while [ $0 != 0 ] do sum="$sum"+"$2" count="$count"+ 1 done if [ "$count" != 0 ] then avg="$sum"/"$count" printf "Sum= $sum n Count= $count n Avg= $avg" exit 0 else printf "Sum= $sum n Count= $count n Avg= undefined" exit 0 fi exit 1 这是我尝试测试代码时的输出: ./average sum: =: No such file or directory sum: 0: No such file or directory ./average: 11: count: not found [: 18: !=0: unexpected operator ./average: 25: Syntax error: Unterminated quoted string 基本上,如果我有一个看起来像这样的文件: FirstPerson 23 SecondPerson 36 ThirdPerson 22 我希望能够将其读入我的程序并输出: Sum = FirstPerson+SecondPerson+ThirdPerson Count = NumberofPeople Average = Sum/Count 解决方法
下面的代码有效,你可以根据需要优化它(或使用awk,perl等):
#!/bin/bash if [ $# -ne 1 ]; then echo "Usage: "$0" <filename>" exit fi if [ ! -f $1 ]; then echo "$1 file not found." echo "Usage: $0 <filename>" exit fi sum=0 count=0 arq=$1 while read line do num=`echo ${line#* }` sum=`expr $sum + $num` count=`expr $count + 1` done < "$arq" if [ "$count" != 0 ] then avg=`expr $sum / $count` printf "Sum= "$sum" n Count= "$count" n Avg= "$avg"" exit 0 else printf "Sum= "$sum" n Count= "$count" n Avg= undefined" exit 0 fi (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |