博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
read 管道 子shell 无法赋值问题的解决
阅读量:4159 次
发布时间:2019-05-26

本文共 439 字,大约阅读时间需要 1 分钟。

from:

问题

最近有一个需求,需要把一个命令的结果分别写入几个变量中,于是想到了用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 > fileread x y z < file

解另一个例子

 
cat file | while read linedo    var=${
line}doneecho ${
var} # 结果为空while read linedo var=${
line}done < fileecho ${
var} # 正确显示

转载地址:http://cybxi.baihongyu.com/

你可能感兴趣的文章
JavaSE_day14 集合中的Map集合_键值映射关系
查看>>
异常 Java学习Day_15
查看>>
Mysql初始化的命令
查看>>
浅谈HTML
查看>>
css基础
查看>>
Servlet进阶和JSP基础
查看>>
servlet中的cookie和session
查看>>
过滤器及JSP九大隐式对象
查看>>
【Python】学习笔记——-7.0、面向对象编程
查看>>
【Python】学习笔记——-7.2、访问限制
查看>>
【Python】学习笔记——-7.3、继承和多态
查看>>
【Python】学习笔记——-7.5、实例属性和类属性
查看>>
git中文安装教程
查看>>
虚拟机 CentOS7/RedHat7/OracleLinux7 配置静态IP地址 Ping 物理机和互联网
查看>>
Jackson Tree Model Example
查看>>
常用js收集
查看>>
如何防止sql注入
查看>>
springmvc传值
查看>>
在Eclipse中查看Android源码
查看>>
Android使用webservice客户端实例
查看>>