shell腳本’|read’管道無法賦值的問題
發(fā)表時間:2014-02-20 15:55 | 分類:Linux?| 瀏覽:3,432 次
問題
今天博主在編寫shell腳本的時候想實現(xiàn)這個需求凑耻,把一個命令的結(jié)果分別寫入幾個變量中太示。我想到用read。
echo a b c | read x y z
可是問題來了香浩,打印出x,y,z均顯示為空类缤。
echo $x $y $z #結(jié)果為空
原來在管道的右邊會打開一個子進程,所以讀到的變量都是子進程中的邻吭,父進程中無法顯示餐弱。
解決方法
1. 使用here string
read x y z <<< $(echo a b c)
2. 先把第一個命令的結(jié)果重定向到文件,再從文件中讀取囱晴。
echo a b c > file
read x y z < file
另一個例子
cat file | while read line
do
var=${line}
done
echo ${var} # 結(jié)果為空
while read line
do
var=${line}
done < file
echo ${var} # 正確顯示
原文鏈接:http://blog.csdn.net/sunvince/article/details/7779078
這里用()括起來就可以使read讀取到子進程里的賦值