1

バックグラウンド

prog標準入力から入力を受け取り、それに何かをするプログラムがあります。また、-f FILE操作中に使用されるデータファイルを見つけるためのフラグも必要です。

このフラグを使用する必要がないように、このプログラムのラッパーとして機能する bash スクリプトを作成したいと考えています。だから私は次のスクリプトを書きましたprogwrap.sh

#!/bin/bash

/path/to/prog -f /path/to/data

基本的な機能のトリックを行うので、次のようなことができます

$ cat somedata.txt | progwrap.sh

そして欲しいものを手に入れる。

ゴール

ここで、 、 などprogの他のフラグも取ることがわかりました。これらを に渡して、 に渡すことができるようにしたいと考えています。そこで、次のように修正しました。-h-uprogwrap.shprogprogwrap.sh

#!/bin/bash

/path/to/prog -f /path/to/data "$@"

引数を取り、おそらくprogスクリプト内にそれらをフィードできるようにします。

問題

ただし、これはどういうわけか機能しません。

$ cat somedata.txt | progwrap.sh -h

とまったく同じ出力を生成します

$ cat somedata.txt | progwrap.sh

これは正しい動作ではありません (つまり、-h フラグが progwrap.sh に渡された結果、出力が異なる形式で出力されるはずです)。

実際、サポートされておらず、通常はエラーをスローする原因となるprogwrap無意味な引数を指定しても、何も起こりません。に渡された引数は、スクリプト内のへの呼び出しによって無視されると結論付けています。progprogprogwrap.shprog

質問

私は何を間違っていますか?progwrap.shこれらのフラグがprogスクリプト内で渡されるように、フラグを渡すにはどうすればよいですか?

4

1 に答える 1

1

ユーザーのメルポメネに感謝します。上記のスクリプトはフラグを渡すのに問題がないことがわかりましprog-f File. 次のように変更すると、スクリプトは正常に動作します。

#!/bin/bash

/path/to/prog "$@" -f /path/to/data

ありがとう!

PS。私の弁護では、このフラグの動作は の設計者によって文書化されていませんでしたprog

于 2012-11-29T14:19:55.847 に答える