1

私は2つのスクリプトを書きました。1 つはmyscipt1.sh、一連の整数 (引数として指定) を読み取り、最終的な数値を報告するものです。

[user@pc user] ./myscript1.sh 34 45 67 234
[user@pc user] 1200

上記の例では、スクリプトは を返します1200。別のスクリプトmyscript2.shは、文字列を入力として受け取り、一連の整数値を返します。

[user@pc user] ./myscript2.sh a string to provide
[user@pc user] 364 465 786 34 22 1

myscript1.shの結果を渡して呼び出したいmyscript2.shので、試してみました:

[user@pc user] ./myscript2.sh my_string | ./myscript1.sh

myscript1.shしかし、 (渡された引数の数をチェックし、引数なしで終了すると)引数が渡されなかったと報告するので、運がありません。

私が書いたスクリプトでパイプを使用すると、Bash に問題があるようです。実行する方法?

4

4 に答える 4

3

次のように実行できます。

./myscript1.sh $(./myscript2.sh my_string)
于 2013-11-06T10:41:08.247 に答える
2

使用するxargs

[user@pc user] ./myscript2.sh my_string | xargs ./myscript1.sh
于 2013-11-06T10:39:24.127 に答える
2

パイプはそのようには機能しません。

パイプは、プログラム/スクリプトから出力を取得し、コマンドライン引数としてではなく、別のプログラム/スクリプトに標準入力として送信します。たとえば、最初のプログラムからパイプされたデータを読み取るために使用できます。readline

これを行うにはxargs(私が書いているときに Joucks が言ったように :) ) を使用する必要があります。

于 2013-11-06T10:42:55.453 に答える
1

パイプを使用する場合は、スクリプトを書き直して、入力を引数としてではなく標準入力から読み取るようにします

input=$1  # old version

read input  # new version

その後、パイプを同じように使用できます。

于 2013-11-06T10:46:39.960 に答える