2021-04-11 read管道无法赋值的问题

shell脚本’|read’管道无法赋值的问题

发表时间:2014-02-20 15:55 | 分类:Linux | 浏览:3,432 次

问题

今天博主在编写shell脚本的时候想实现这个需求,把一个命令的结果分别写入几个变量中。我想到用read。

echo a b c | read x y z

可是问题来了,打印出x,y,z均显示为空。

echo $x $y $z #结果为空

原来在管道的右边会打开一个子进程,所以读到的变量都是子进程中的,父进程中无法显示。

解决方法

1. 使用here string

read x y z <<< $(echo a b c)

2. 先把第一个命令的结果重定向到文件,再从文件中读取。

echo a b c > file

read x y z < file

另一个例子

cat file | while read line

do

var=${line}

done

echo ${var} # 结果为空

while read line

do

var=${line}

done < file

echo ${var} # 正确显示

原文链接:http://blog.csdn.net/sunvince/article/details/7779078


这里用()括起来就可以使read读取到子进程里的赋值
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容