本文共 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/