1

入力をテキストでbashラップするスクリプトを書きたいと思います。piped

グーグルに基づいて、例から選択しようとしています。これが私がこれまでに持っているものですが、うまくいきません:

#!/bin/sh

if readlink /proc/$$/fd/0 | grep -q "^pipe:"; then
    echo "{ "template":{"name":"contact sheet template","root":"root","parameters": ["pages"]},"pages":"
    cat
    echo "}"
fi

入力として別のプログラムから JSON リストを受け取っています。次のプログラムに結果をpiped渡す前に、上記のテキストを前後に出力したいと考えています。pipe

program_1 | wrapper.sh | program_2 > outputfile

しかし、それは何も出力しません。

よりbash専門的な知識を持つ人が正しい方向に私を向けることができますか?

4

2 に答える 2

2

スクリプトが次のようなパイプから標準入力を読み取っているということですか?

$ other-process | my-script

?

次に、スクリプト内のコマンドは、パイプから標準入力を単純に継承します

#!/bin/sh

# Output preamble
cat <<EOF
{ "template":{"name":"contact sheet template","root":"root","parameters": ["pages"]},"pages":
EOF

cat   # This reads from standard input inherited from your script

# Output the closing
cat <<EOF
}
EOF
于 2013-02-27T14:15:22.810 に答える
2

個人的に私はこの方法で検索します:

myscript.sh

echo 'BEFORE' $(cat) 'AFTER'
于 2013-02-27T13:12:05.610 に答える