等号と中括弧を含む変数の拡張

等号と中括弧を含む変数の拡張

rsyncを使用し、特定の設定に従ってファイルを除外するスクリプトを作成しています。形式の除外フラグで終わります--exclude={foo, bar, baz}

しかし、コマンドでそれを拡張しようとしたときにrsyncフラグがエスケープされていることがわかりました。 Bashデバッガでは、rsync $excludesComesコマンドがrsync '--exclude={foo,bar,baz}'期待どおりに機能しないことがわかります。一部のテストでは、拡張時に、、、または埋め込みrsync --exclude={foo,bar,baz}文字列が一重引用符で囲まれていることがわかりました。生成された文字列にevalを使用せずにこの問題を解決する方法はありますか?={}

ベストアンサー1

引用時に中括弧拡張は発生しません。また、可能であれば、変数ではなく配列にパラメータを保存する必要があります。

私は次があなたに役立つと思います。

excludes=( $(--exclude={foo,bar,baz}) )
rsync "${excludes[@]}"

おすすめ記事