2016-06-16 11 views
1

catで入力を永久に待つことなく、パイプで呼び出されるシェルスクリプトから入力をキャッチするにはどうすればよいですか?スクリプトでシェル:catでユーザー入力をキャッチ

echo "hello world" | mysript.sh 

私は入力を取得しよう:

input=$(cat) 

しかし、それは入力を待機するため、いくつかのケースではcatコマンドは、タイムアウトにスクリプト全体を引き起こします。

+1

あなたは入力を捕まえたいが、入力を待つことはしたくないのですか? –

+2

入力はEOF = ctrl + Dで終わらなければなりません。 –

+0

あなたのスクリプトで 'read'を使うことをお勧めします。行単位で読むことができ、シェルはタイムアウトや1文字読み込みなどの余分なツールをサポートします。 – ghoti

答えて

0

てみて、あなたはシェルスクリプトでパイプからデータを処理したいと想定します

スクリプトでは:コマンドラインで

read LINE 
echo $LINE 

を:この場合

echo "hello world" | ./mysript.sh 

hello worldになりますLINEに読んでください。

+0

グロビングパターン "/ etc/*' "(例えば二重引用符' $ LINE')を含むものでそれを試してください。 – Kusalananda

関連する問題