一般に、スクリプトへの標準入力を処理する 1 つの方法を次に示します。
#!/bin/bash
while read line; do
echo $line
done
これは に相当する非常に大まかな bash ですcat
。read
これは重要な事実を示しています。スクリプト内の各コマンドはシェルから標準入力を継承するため、入ってくるデータにアクセスするために特別なことをする必要はありません。あなたのケース)はtail
、パイプを介して接続されたプロセスから入力を取得しています。
別の例として、次のスクリプトを考えてみましょう。これを「mygrep.sh」と呼びます。
#!/bin/bash
grep "$1"
これでパイプライン
some-text-producing-command | ./mygrep.sh bob
と同じように動作します
some-text-producing-command | grep bob
$1
次のようにスクリプトを呼び出すと、設定されます。
./myscript.sh foo
次に$1
、値「foo」を持ちます。
定位置パラメーターと標準入力は分離されています。あなたはこれを行うことができます
tail -n +1 -f your_log_file | myscript.sh foo
tail
標準入力はまだプロセスから来ており、$1
まだ 'foo' に設定されています。