Bashに引用符とスペースを含む変数を追加する

Bashに引用符とスペースを含む変数を追加する

パラメータを含むbashスクリプトでコマンドを実行したいが、パラメータは条件付きです。私が達成したいのはこれです。

command --myflag var="value with space"

上記の場合は条件文が必要で、スペースのため--myflag var="value with space"に二重引用符も必要です(他の理由の1つ)。だから私はこれを試しました。

if [ $somecondition ]; then
  FLAG="--myflag var=\"value with space\""
fi

command $FLAG

デバッグで上記の内容を実行すると、実行中の内容が次のようになります。

command --myflag 'var="value' with 'space"'

一重引用符に注意してください。なぜこれが起こるのかわかりませんが、何度も試しても解決策が見つからないようです。

人々はこの問題をどのように解決しますか?

ベストアンサー1

あなたは使用する必要がありますBash配列の拡張。それは次のとおりです。

declare -a FLAG
if [ $somecondition ]; then
  FLAG=(--myflag 'var="value with space"')
fi
command "${FLAG[@]}"

おすすめ記事