パイプと、bashでの使用方法

一部のスクリプトで次のようなコマンドが表示されます:/bin/cat somefile | someprogram。 someprogramと同じようにパイプ全体を読み取る方法を知りたいです。したがって、/bin/cat something | myprogram.shを実行すると、myprogram.shには、パイプされたもの(すべてのパイプテキスト)に等しいmypipevarという変数があります。不明な点がある場合はお知らせください。読み取りが機能しない可能性があり、bashが適切なシェルではない可能性があることを読みました。

回答

パイプは

を接続しますあるプログラムのdivid = “2beac55132″>

から別のプログラムのstdinに移動するため、スクリプトではstdinから読み取ります。前のコマンドが出力したものを取得します。これを変数に読み込む簡単な方法は、たとえばmyprogram.sh内にcatを使用することです。

mypipevar="$(cat ${1:-/dev/stdin})" echo "Obtained the value: "$mypipevar"" 

ただし、かなり多くの場合、一度に処理するのではなく、1行ずつ処理する必要があります。これは、

while read line do echo "$line" done < "${1:-/dev/stdin}" 

${1:-/dev/stdin}は最初の引数を提供します。引数が指定されていない場合は、/dev/stdinに、ファイルのように読み取ることができるstdinの内容が含まれます。これにより、スクリプトをcommand | scriptまたは単にscript filenameとして実行できます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です