为方便演示,建一个脚本while.sh内容如下:

cat while.sh 

#!/bin/bash

A=1

pstree

cat 1.txt | while read line;do

#起了子进程,看如下pstree

        pstree

        echo $A

        A=${A}_${line}

        echo $A

done

echo $A

####################华丽的分割线##########################

1.txt的文件内如如下:

cat 1.txt

2

执行while.sh结果如下:

sh while.sh 

├─sshd───sshd───sshd───bash───sh───pstree


├─sshd───sshd───sshd───bash───sh───sh───pstree

1

1_2

1

#如上pstree所示,开始时,全局变量$A=1,在管道符之后新起了一个sh的子进程,此时$A变量是在这个子进程中进行赋值、变换的,相当于局部变量,循环结束后,局部变量$A=1_2变量释放,全局变量$A=1未改变