添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
echo $ var

最后面的echo输出的var仍然是1。原因是while循环位于管道中,这意味着在运行过程中,while循环实际是位于一个新的SHELL中的,while循环中的var变量和文件开头定义的var变量是两个不同的变量,所以while循环中所改变的值在while循环结束后无法保存下来。

解决方法是消除子shell,下面是其中一个简单的解法:

#!/bin/sh
var=1
python run.py > a.out
while read line
    echo $line
    var=var+1
    let "var=var+1"
done < a.out
echo $var
rm -f a.out