stdoutから入力を受け取るスクリプトを書く方法

stdoutから入力を受け取るスクリプトを書く方法

私はパイプで接続されている場合は、パラメータとして渡すことができるスクリプトを書くことができるようにしたいと思いますstdout(最終的に多型になりたい)。

問題は、これを行う方法を検索して検索しましたが、役に立たないことです。他のタスクを実行するための多くの代替案はそうではありません。

cat /var/log/some.log | grep something | awk '{print $1 $6 $8}' | myscript

代わりに、なぜこれを行うのですか? :myscript $(!!) 今この瞬間、それが可能であることを証明するために…

スクリプトで「変数を読む」ことができることを知っていますが、行に気にしないとしましょう。スクリプト全体をテキストブロックとして受け入れ、スクリプトでそれを使用して作業を実行したいとします。

私は本当に次のことをしなければなりません:

while read x; do
stdin=$stdin" "$x;
done;

STDINで読むには?

もっと良い方法があります...

ベストアンサー1

すべてのstdinをシェルスクリプトとして読み取るには、通常一時ファイルにキャプチャします。

TMPFILE=$(mktemp -- "${TMPDIR:-/tmp}/${0##*/}.$$.XXXXXX") || exit
cat > "$TMPFILE"
# Script works with $TMPFILE and its contents,
# ultimately writing everything to stdout.
rm -f -- "$TMPFILE"

システムユーティリティも同様の作業を行います。sortたとえば、標準出力で何でも印刷するには、すべての標準入力を使用できる必要があります。

おすすめ記事