2015-06-20 83 views
-1

我是一個編寫Bash腳本的初學者,所以我對管道的體系結構感到困惑。例如,對於諸如grep的基本命令,管道是否必須以某種方式配置並編程爲允許進入命令?或者,管道是否自動將輸出作爲第一個參數傳遞給管道的任何內容?如何在我的bash腳本中配置和允許管道?

我的主要問題是說我有一個腳本,採用文本作爲第一個參數使用類似my_script.sh text_file。如果我要做echo Hello | my_script.sh,管道是否會自動工作,還是必須遵循一些界面來允許管道。

+1

'echo你好| my_script.sh'會將hello寫入可以通過'read'命令訪問的bash腳本的標準輸入。如果你想把它作爲參數使用'my_script.sh $(echo Hello)',實際上它等於'my_script.sh Hello' – msrd0

+1

,你的腳本不能允許管道,因爲它不能禁止管道。 – msrd0

回答

1

在Unix系統中,everything is a file。將命令的輸出(再次,它是文件)輸出到另一個輸入稱爲pipe lining(或管道簡稱)。

所以當你看到一組命令如下:

歷史| grep ls | less

history:返回從終端輸入的bash命令列表。它的輸出作爲輸入被輸入到grep。 grep ls:找到所有帶有「ls」字母的行。 (認爲​​它是某種過濾機制)。再次,它的最終結果是輸入較少的輸入 少:一次顯示屏幕信息並等待用戶點擊一個鍵。

回到你的問題:爲了編寫一個腳本,它從標準輸入獲取輸入,你必須記住從那裏讀取。如果你的腳本是這樣寫的,那麼是的,你可以做到。

Here are a couple of examples,在這裏你可以找到如何編寫這樣的腳本。

希望它有幫助=]

相關問題