tar除外がbashでは機能しません。

tar除外がbashでは機能しません。

tarを除外するためにbashスクリプトを使用することはできません。

#!/bin/bash


CMD='tar --exclude=*.{db,log,token} -zcvf /home/pi/backup/2020.11.08-18.04.59.backup.tgz -P /home/pi/backup/test'
echo $CMD
sudo $CMD

しかし、echo出力コマンドを実行すると機能します。

tar --exclude=*.{db,log,token} -zcvf /home/pi/backup/2020.11.08-18.04.59.backup.tgz -P /home/pi/backup/test

ファイル拡張子に基づいてファイルを除外しようとしています。

タール(GNUタール)1.30

ベストアンサー1

Bashでは配列を使用する必要があります。

cmd=(tar --exclude='*'.{db,log,token} -zcvf /home/pi/backup/2020.11.08-18.04.59.backup.tgz -P /home/pi/backup/test)

echo "${cmd[@]}"

=> tar --exclude=*.db --exclude=*.log --exclude=*.token ...

"${cmd[@]}"
# etc

上記は、誰かがコマンドを失敗させるために'*'現在のディレクトリに--exclude=foo.logというファイルを植えるのを防ぐためです。--exclude=bar.log

これはtarには関係ありませんが、シェルとコマンドラインを解析して拡張する方法に関連しています{db,log,...}

おすすめ記事