2017-08-03 5 views
2

ジョブの出力をスクリプトにパイプして、stdout行を読み込んでアクションを完了させ、出力を端末に表示したいとします。stdoutをスクリプトにパイプして端末に書き込むためにbashを使うにはどうすればいいですか?

今、私はこれを持っている...

ls | ./script.sh 

これは私のスクリプトは、出力上で実行することができますが、端末上のlsの結果は表示されません。

私はこの試みている:

ls | tee ./script.sh 

をこれはLSからの出力とscript.shの内容を上書きします。

ターミナルで "ls"の出力を表示し、その入力に対してscript.shの内容を実行するにはどうすればよいですか?

あなたが行うことができます
#!/bin/bash 
while read line 
    do 
    echo line input 
    done 

答えて

6

:ここに私script.shがどのように見えるかの例である

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

か、あなたはstdoutが配管前だった正確に何を使用したい場合は、 を行うことができます

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

'/ dev/tty'は' ls |ティー/ dev/tty | 。/ script.sh'、そうですか? – codeforester

+2

@codeforesterオプションではありません。それがなければ、出力(=コピーされた入力= lsの出力)はスクリプトだけに行きます。それを使って、制御端末とスクリプトに行きます。 – PSkocik

関連する問題