【发布时间】:2013-11-03 10:11:54
【问题描述】:
Bash 允许使用:cat <(echo "$FILECONTENT")
Bash 也允许使用:while read i; do echo $i; done </etc/passwd
结合前两个可以使用:echo $FILECONTENT | while read i; do echo $i; done
最后一个的问题是它创建了子shell,在while循环结束后变量i不能再访问了。
我的问题是:
如何实现这样的事情:while read i; do echo $i; done <(echo "$FILECONTENT") 或者换句话说:我如何确定i 在 while 循环中存活?
请注意,我知道将 while 语句包含在 {} 中,但这并不能解决问题(假设您想在函数中使用 while 循环并返回 i 变量)
【问题讨论】:
-
相关:stackoverflow.com/questions/37229058/…。解释所有选项,包括下面提到的进程替换和
lastpipe及其优缺点。
标签: bash while-loop stdin pipe