我试图在脚本末尾得到总和 ,36962
以呼应$TOTAL
,但我无法让它工作。有什么建议吗?这是一个学校项目,我对 Bash 很生疏。
TOTAL=0
while read p; do
awk '{ if ($1 > 100 ) print TOTAL+=$1}'
echo $TOTAL
done < ipuniq.txt
- 6578
- 6723
- 32735
- 36962
- 回声 -> 0
我试图在脚本末尾得到总和 ,36962
以呼应$TOTAL
,但我无法让它工作。有什么建议吗?这是一个学校项目,我对 Bash 很生疏。
TOTAL=0
while read p; do
awk '{ if ($1 > 100 ) print TOTAL+=$1}'
echo $TOTAL
done < ipuniq.txt
该
TOTAL
变量是一个shell变量,因此awk
不会知道它。在您的awk
命令中,TOTAL
变量在每次迭代中都未设置,因此每次都将其重置为单个值,然后打印。awk
此外,在这样的循环中使用似乎毫无意义。awk
可以使用以下 1 行自己执行此操作:不需要循环或其他命令。
但是,如果您的作业要求您使用 bash/shell,您可以这样做:
这将使用 shell 算术表达式来检查 的值
p
是否大于 100,如果是,则将其添加到total
.另外注意:我已在
-r
您的命令中添加了该选项,read
因为这将按字面意思打印反斜杠(您的用例可能不需要,但我更喜欢一直使用-r
,除非我特别有理由不这样做。)我还添加了
_
参数名称,这将防止p
被设置为不需要的输入。read
会将所有剩余单词分配给最后一个参数,因此在您的情况下,假设您的文件包含数字和 IP,例如:如果没有参数来捕捉杂物,
p
将设置为:然后: