2015-10-17 273 views
1

我對sh很新,希望在理解腳本輸出時提供一些幫助。有關簡單SH腳本輸出的說明

我執行:

(echo a b c; echo 1 2 3) > data_file 

然後我運行腳本(run.sh):

run.sh < data_file | tr 'a-z' 'A-Z' 

#!/bin/sh 
while read a b 
do 
echo $a $a $b $b $c $c 
echo $a $a $b $b $c $c 
done 

輸出變爲:

A A B C B C 
A A B C B C 
1 1 2 3 2 3 
1 1 2 3 2 3 

我不明白的是爲什麼C被顯示,當變量$ b在它的位置被打印。它不應該打印b嗎?此外,還沒有c變量,但它的位置正在打印一個值。 我所預料的輸出是這樣的:

A A B B 
A A B B 
C C 1 1 
C C 1 1 
2 2 3 3 
2 2 3 3 
+3

提示:簡化腳本'同時讀取A B;做echo $ a; echo $ b; done'。這應該有助於你理解發生的事情。 –

+0

優秀 - 不知道爲什麼我沒有想到這一點。 – SSS

+1

不知道爲什麼這是downvoted。它有一個好問題的所有要素 - 輸入數據,預期輸出,實際輸出和代碼。 – ghoti

回答

0

原來存儲的「B C」 B的值

+0

原因是,如果您讀取由N個單詞組成的輸入,但您只提供 ghoti