bashと変数コマンドの置換の問題

bashと変数コマンドの置換の問題

URLのカール要求を実行するbashスクリプトがあります。すべてのカールヘッダーと情報は変数に含まれています。ここに簡単な例があります。

STRING="'http://www.mydomain.com/url' -H 'mydomain.com'"

私はもともとスクリプトがechoとxargsを介して渡すようにしましたが、これが良いアプローチではないかもしれないことを読み続けました。

「curl:(1)プロトコル「http」がlibcurlでサポートされていないか無効になっています」というカールエラーが発生するcurl $STRINGように二重引用符を追加しようとしたときに問題が発生しました。curl "$STRING"

おそらく、引用符とスペースについて、ここで簡単なことを見落としていると思います。 (私は以前に一重引用符をエスケープしようとしましたが、文字通り文字列に追加しました)

$ STRINGをechoすると、すべての引用符と一重引用符で書かれたものが表示され、echo $STRING | xargs curl入力時に文字列が乾燥して目的の操作を正確に実行します。

ベストアンサー1

xargs特に動作する場合、問題は何ですか?

シェルは拡張の結果ではなく引用符を削除します。つまり、二重引用符を削除した結果の一重引用符は削除されません。代わりに配列を使用してください。

args=('http://www.mydomain.com/url' -H 'mydomain.com')
curl "${args[@]}"

おすすめ記事