2016-01-29 57 views
1

如果我所說的這樣的腳本如何捕獲傳輸到shell腳本的數據?

echo "some text" | myscript

如何在腳本一起工作捕獲「一些文本」。在這種情況下,也許將其分配給一個變量。

我一直在谷歌搜索,但我想我沒有使用正確的術語來找到我在找什麼。

+0

你是問如何在腳本中使用標準輸入? – 123

+0

我這麼認爲,但我不確定。就腳本而言,我對stdin並不熟悉。通常我會爲我的腳本使用參數,但由於我在這裏要做的事情,這不適用於這種特殊情況。 – Trel

+0

它看起來像它,雖然我把它固定在一個while循環中,所以我可以在一個變量中得到它。 – Trel

回答

3

來自上一個命令的所有數據(在你的情況下爲echo)將在管道中的下一個命令的STDIN上可用。只需使用內置的read即可捕獲它。這裏是一個方式來捕捉在單線上`閱讀:

echo "some text" | { IFS= read -r line; echo "line=[$line]"; } 
line=[some text] 

或者你甚至可以使用默認REPLY變量:

echo "some text" | { IFS= read -r; echo "line=[$REPLY]"; } 
line=[some text] 
+0

你爲什麼要改變IFS ... – 123

+0

前導和尾隨的空白不會被讀出而不會出現IFS =' – anubhava

+0

它可以在'echo'一些文本的子殼中完成。 (IFS = read -r line; echo「line = [$ line]」;)' – anubhava