gpt4 book ai didi

bash - 在 Bash 循环中设置变量

转载 作者:行者123 更新时间:2023-11-29 09:37:37 25 4
gpt4 key购买 nike

刚开始学习Linux Bash Shell Programming,不知道自己理解的对不对。查看下面的示例程序:

#!/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。

最佳答案

您应该按照@linuxfan 的建议避免使用管道。您可以将代码更改为:

while read c1 c2 c3 c4 c5 c6 c7 c8 c9 c10
do
...
done < <(ps -ly)

这样你的变量就会保持在相同的范围内。

关于bash - 在 Bash 循环中设置变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41889148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com