我创建了一个脚本,将您输入的四个数字相加:示例:
./myawkaverage 8 7 9 4
28
我需要我的脚本来添加这四个数字并显示平均值,以便结果如下所示:
例子:
./myawkaverage 8 7 9 4
The average is 7
我还需要脚本来接受负数。
到目前为止我的脚本如下所示:
#!/bin/bash
echo $1 $2 $3 $4 | awk '
{
print sum3($1, $2, $3, $4)
}
function sum3(a, b, c, d) {
return (a + b + c + d)
}'
答案1
如果没有错误检查和使用用户定义的awk
函数,您可以将脚本简化为:
#!/bin/bash
echo $1 $2 $3 $4 | awk '{sum=0; for(i=1; i<=NF; i++) sum += $i; print sum}'
或者如果您不需要始终输出数字(即使为零):
#!/bin/bash
echo $1 $2 $3 $4 | awk '{for(i=1; i<=NF; i++) sum += $i; print sum}'
答案2
命名求和函数4数字“总和3“是一个有趣的选择,就像命名一个脚本一样总和数字“myawk平均的“ :-)。 反正...:
$ cat myawkaverage
#!/usr/bin/env bash
printf '%s\n' "$@" | awk '{sum+=$0} END{print sum}'
$ ./myawkaverage 8 7 9 4
28
$ ./myawkaverage 1 2 3 4 5 6 7 8 9 10 11
66
如果您实际上正在尝试编写一个脚本来获取平均值,那么:
$ cat ./myawkaverage
#!/usr/bin/env bash
printf '%s\n' "$@" |
awk -v n="$#" '{sum+=$0} END{ave=(n ? sum / n : "NaN"); print sum, ave}'
$ ./myawkaverage 8 7 9 4
28 7
$ ./myawkaverage 1 2 3 4 5 6 7 8 9 10 11
66 6
$ ./myawkaverage 0
0 0
$ ./myawkaverage
0 NaN