他のスクリプトから生成されたスクリプトに引数を渡す方法

他のスクリプトから生成されたスクリプトに引数を渡す方法

次のシナリオがあります。

IDを使用してデータベースからいくつかのパラメータを検索するPerlスクリプトがあります。look_up_args.pl 234以下が印刷されたとしましょう。abc 123 "something with spaces"

script.sh以下を実行する別のシェルスクリプトがあります

some_command --param1 $1 --param2 $2 --par3 "$3" ...

私がやりたいことは、パラメータを使ってスクリプトを呼び出すことです。

私は次の2つの方法を試しました。

./script.sh `./look_up_args.pl 234`
./script.sh $(./look_up_args.pl 234)

それでも実行するたびにscript.shインクルードだけでスクリプトが失敗するよう$3です。"something"どのようなシェル拡張なども行わずに、引用符付き文字列を渡す方法を探しています。 3番目のパラメータには他の特殊なbash文字を含めることができますが、常に引用します。

ベストアンサー1

私はこれをお勧めしませんが、次のことを試してください。

eval "./script.sh $(./look_up_args.pl 234)"

これはうまくいきますが、出力で発生するすべてのものevalを評価するので、コードの挿入に対して脆弱であることに注意してください。look_up_args.pl

より良いオプションは、@thrigがコメントで提案したものです。標準化されたデータ型を使用してツール間でデータを渡します。改行で区切られた文字列も、シェルスタイル処理パイプラインに適した形式です。

おすすめ記事