私は、次のbashの配列があります。使用bashの配列
IGNORED_DIRS=(
"vendor"
"node_modules"
"bower_components"
"tmp"
"backup"
)
をそして、私は、これは、このような方法で出力する必要があります
tar -cpzf /var/backups/ --exclude="vendor" --exclude="node_modules" --exclude="bower_components" --exclude="tmp" --exclude="backup"
はこれまでのところ、私は次のことを試してみました:
for dir in ${IGNORED_DIRS[@]}
do
EXCLUDES=$EXCLUDES" --exclude=\""$dir"\""
done
私は、正確な除外文字列を含む変数になります。私は単純にできると思った。
tar -cpzf /var/backups/ $EXCLUDES
しかし、それは単純にすべての除外フラグを無視します。誰も私のための解決策を持っていますか?
解決策が見つかったようです。 'EXCLUDES'行をこのEXCLUDES = $ EXCLUDESに置き換えると、--exclude =" $ dir "" '問題を修正するようです。だから、除外ディレクトリを取り巻く引用符はもうありません。奇妙なことに彼は働いています... – Diederik
上記は些細な場合にのみ有効です - ディレクトリ名にスペースを入れてみてください。 –
BTW - all-caps変数名は、オペレーティングシステムまたはシェルに意味を持つ環境変数およびシェル組み込み関数に使用されますが、小文字名はアプリケーション用に予約されています。したがって、独自のシェル変数に小文字の名前を使用すると、誤ってオペレーティングシステムに意味を持つ変数を上書きすることはできません。将来のOSおよびシェルリリースとの互換性を保つ場合は特に重要です。 [関連する仕様](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html)を参照してください。 –