欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

while read line循环变量输出问题

程序员文章站 2024-03-21 12:48:34
...
i=0
cat file | while read line
do
	let i++ 
done
echo "$i"

上述程序每次输出的i都为0
在多次执行过程中发现i总是有还原成默认值的情况。
echo "$i"放在done前每次循环都可见在累加
都过查找资料发现:while read line有2种用法

1.即上述用法

使用管道符 | 的方法相当于启动了一个独立的子进程,因此循环中的变量i是属于子进程中的,与循环外的i虽然同名,但是值却不同。

2.使用重定向 < 的方法则不会有这种现象,在脚本启动时并没有子进程出现,故i的值属于同一个bash

i=0
while read line
do
	let i++ 
done < file
echo "$i"
相关标签: linux shell