请教1个shell 问题

首先管道属于非内建指令,linux执行shell时,会创建“子shell”运行shell中的命令,当运行到非内建指令时,会创建“shell”运行非内建指令,变量的作用于在每个shell中有效,所以,非内建指令中定义的这些变量就只能在shell运行,而在子shell中不生效,所以,即便在while中给count赋值了,子shell中也不会获取到这个值。这类属于shell变量作用域问题,与其他语言不同。

解决这个问题的办法有两种

如果不是必须使用管道符的方式写while循环,可以用重定向的写法,这种写法循环内的变量在子shell中是生效的,比较简便

如果非要使用管道符的方式,可以创建临时文件,用于存放shell中的输出。