【发布时间】:2017-01-27 07:51:49
【问题描述】:
刚开始学习Linux Bash Shell 编程,不知道自己理解对不对。查看下面的示例程序:
#!/bin/bash
n=1
sumRSS=1000
sumSZ=2000
echo Before sumRSS=$sumRSS sumSZ=$sumSZ
ps -ly | while
read c1 c2 c3 c4 c5 c6 c7 c8 c9 c10
do
if (( n>1 ))
then
echo n=$n rss=$sumRSS sz=$sumSZ
((sumRSS = sumRSS + c8))
((sumSZ = sumSZ + c9))
fi
((n++))
done
echo Sum of RSS = $sumRSS
echo Sum of SZ = $sumSZ
输出:
Before sumRSS=1000 sumSZ=2000
n=2 rss=1000 sz=2000
n=3 rss=2368 sz=29118
n=4 rss=3792 sz=55644
n=5 rss=4780 sz=82679
Sum of RSS = 1000
Sum of SZ = 2000
我不知道为什么总和仍然回到 RSS=1000 和 SZ=2000。我实际上期待 RSS=4780 和 SZ=82679。
我知道我缺少一些基本的东西。我正在通过编写简单的脚本来学习 bash。
【问题讨论】:
-
这个示例代码是你写的吗?
-
@GeorgeVasiliou 不,我是从我订阅的在线学习网站之一获得的。为了我的个人学习,我进行了一些编辑和探索。我以为这很简单,但我遇到了这个问题。
-
欢迎来到 Bash!提示:您可以在脚本中包含选项
set -xv(就在#!/bin/bash行之后)。这将启用详细模式并帮助您查看正在发生的事情。实际上,在您的屏幕上,bash 会通知您将要执行的代码(逐步)和变量的值...有用的调试选项。 -
顺便问一下,在学习站点中,他们会建议预期的输出是什么?我运行了这个测试,我得到了和你一样的结果。