2

入力ストリームを介して入力を取得するプログラムにコマンドラインでいくつかのパラメーターを与えることを可能にするbashトリックはありますか?このようなもの:

program < 'a=1;b=a*2;'

ただし、<にはファイル入力ストリームが必要です。

4

4 に答える 4

6

非常に短いヒアドキュメントの場合は、ヒア文字列もあります。

program <<< "a=1;b=a*2"
于 2012-05-09T18:34:35.500 に答える
2

おもう

echo 'a=1;b=a*2;' | program

必要なものです。この工程を「パイピング」といいます

補足として、反対のことを行う(つまり、他のプログラムの出力を引数としてパイプする)には、xargs

于 2012-05-09T18:30:34.347 に答える
1

echoよく働く。他の答えはヒアドキュメントです[1]

program <<EOF
a=1;b=a*2;
EOF

1行に非常に短いものが1つある場合はechoを使用し、改行が必要なものがある場合はヒアドキュメントを使用します。

[1] http://tldp.org/LDP/abs/html/here-docs.html

于 2012-05-09T18:33:27.597 に答える
0
shopt -s expand_aliases

alias 'xscript:'='<<:ends'

xscript: bc | anotherprog | yetanotherprog ...

    a=1;b=a*2;

:ends

これをハックするのに1年かかりました。プレミアム bash スクリプトです。当然のことながら敬意を払ってください:)

ヒア ドキュメント内で bash 変数と置換を展開できるため、この小さな「ディディ」xscript と呼びます。

alias 'script:'='<<":ends"'

上記のバージョンは置換を展開しません。

xscript: cat

The files in our path are: `ls -A`

:ends

script: cat

The files in our path are: `ls -A`

:ends

私は終わっていません!

source <(xscript: cat
    echo \$BASH "hello world, I'mma script genius!"
    echo You can thank me now $USER
:ends
)
于 2012-05-09T21:53:05.237 に答える