web-dev-qa-db-ja.com

bash:オプションでコマンドに引数を渡す

別の変数に依存するコマンド呼び出しに引数を追加しようとしています。シェルスクリプトコードを見てください。

_curl \
  $([ -z "${title}" ] || echo --data-urlencode title=${title}) \
  http://example.com
_

この例では、titleにnull以外が指定されている場合、curlに引数が追加されます。

titleにスペースが含まれている場合、これは正しく機能しません。また、titleがnullの場合、curlに予期しない空の引数が生成されるため、$(...)を引用符で囲むこともできませんでした。

期待どおりに機能させるにはどうすればよいですか。

22
Shou Ya

私はbashの問題を解決しました${var:+...}構文、( 参照 )。

スクリプトは次のように変わります

curl \
    ${title:+ --data-urlencode "title=${title}"} \
    http://example.com

完璧に動作します。

こちらもご覧ください:

26
Shou Ya