別の変数に依存するコマンド呼び出しに引数を追加しようとしています。シェルスクリプトコードを見てください。
_curl \
$([ -z "${title}" ] || echo --data-urlencode title=${title}) \
http://example.com
_
この例では、title
にnull以外が指定されている場合、curl
に引数が追加されます。
title
にスペースが含まれている場合、これは正しく機能しません。また、title
がnullの場合、curl
に予期しない空の引数が生成されるため、$(...)
を引用符で囲むこともできませんでした。
期待どおりに機能させるにはどうすればよいですか。
私はbashの問題を解決しました${var:+...}
構文、( 参照 )。
スクリプトは次のように変わります
curl \
${title:+ --data-urlencode "title=${title}"} \
http://example.com
完璧に動作します。
こちらもご覧ください: