Ksh

輸出流到變數流

  • January 19, 2017

我有兩個針對兩個不同系統執行的查詢。他們每個人都返回一行,我想在一行上輸出它們。

如果查詢產生的結果類似於:

echo this that and more
echo other great news

我希望能夠像這樣進行一些重新排序和格式化:

echo other this that great news and more 

如果我能弄清楚如何將行的輸出回顯到多個變數中,我會很好。我得到了這個工作:

echo this that and more | while IFS=" ", read a b c
do
 echo a=$a b=$b c=$c
done 

但是一旦我退出 while 循環,變數 ab 和 c 就超出了範圍並且不再具有它們的值。

並不是說它們超出了範圍ksh(至少 AT&T 版本)沒有bash. 它read被稱為兩次。

第二次是它失敗並讓你脫離循環的那一次。

由於那一秒read沒有讀取任何內容,它會將 a、b 和 c 設置為空字元串。

做就是了:

echo this that and more | IFS=" " read a b c
echo "a=$a b=$b c=$c"
a=$(echo this...)
b=$(echo other...)
echo -- "$a $b"

引用自:https://unix.stackexchange.com/questions/338478