2017-08-03 57 views
2

我想將作業的輸出傳遞給腳本以讀取標準輸出行並完成操作並在終端上顯示輸出。如何使用bash將stdout傳遞給腳本並寫入終端?

現在,我有這個..

ls | ./script.sh 

這使我的劇本要在輸出上運行,但不會顯示在終端上LS的結果。

我已經試過這樣:

ls | tee ./script.sh 

但這覆蓋內容script.sh的與LS輸出。

如何在終端上顯示「ls」的輸出,並在script.sh上通過該輸入運行內容?這裏是什麼我script.sh看起來像一個例子:你可以做

#!/bin/bash 
while read line 
    do 
    echo line input 
    done 

回答

6

ls | tee /dev/tty | ./script.sh 

,或者,如果你想使用管道之前到底是什麼標準輸出是,你可以做 例如:

{ ls | tee /dev/fd/3 | ./script.sh ; } 3>&1 #(3 is an semi-arbirtrary choice of fd) 
+0

'/ dev/tty'在'ls | tee/dev/tty | 。/ script.sh',對嗎? – codeforester

+2

@codeforester它不是可選的。如果沒有它,輸出(=複製的輸入= ls的輸出)將只發送給腳本。有了它,它會轉到控制終端和腳本。 – PSkocik

相關問題