当前位置:  开发笔记 > 运维 > 正文

为什么"echo foo | read a; echo $ a"没有按预期工作?

如何解决《为什么"echofoo|reada;echo$a"没有按预期工作?》经验,为你挑选了2个好方法。

我可以在FreeBSD,GNU/Linux和Solaris下使用各种shell复制问题.它让我头疼了一个多小时,所以我决定在这里发布这个问题.



1> Bombe..:

由于管道,read它在自己的子壳中执行.

echo foo | while read a; do echo $a; done

会做你期望的.



2> wimh support..:

替代方案:

echo foo | (read a ; echo $a)

编辑:

如果在子shell外需要$ a,则必须反转命令:

read a < <(echo foo); echo $a

这样,读取在当前进程中执行

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有