BashスクリプトのTar除外パラメータは機能しません。

BashスクリプトのTar除外パラメータは機能しません。

シェルで直接うまく機能するtarコマンドラインがあります。

tar --exclude=out/pictures/\*.{jpg,gif,png,jpeg} --exclude=tmp/\*.{txt,php} --exclude=log/\*.{log,sql} -cvf /backups/mydomain.tar -C /var/www/vhosts/mydomain.com/httpdocs content

このコマンドをbashスクリプトに入れて実行すると、除外パラメータは無視されます。

私は次のようないくつかの異なる構文を試しました。

tar --exclude="out/pictures/\*.{jpg,gif,png,jpeg}" -cvf /backups/mydomain.tar -C /var/www/vhosts/mydomain.com/httpdocs content

tar --exclude='out/pictures/\*.{jpg,gif,png,jpeg}' -cvf /backups/mydomain.tar -C /var/www/vhosts/mydomain.com/httpdocs content

tar --exclude out/pictures/\*.{jpg,gif,png,jpeg} -cvf /backups/mydomain.tar -C /var/www/vhosts/mydomain.com/httpdocs content

tar --exclude= out/pictures/\*.{jpg,gif,png,jpeg} -cvf /backups/mydomain.tar -C /var/www/vhosts/mydomain.com/httpdocs content

しかし、何も動作しません。除外パラメータは単に無視されます。

単純な--excludeは--exclude="tmp"期待どおりに動作します。パラメータの使用を開始すると、私が想定している構文が壊れます。

Ubuntu 18.04.5でtar(GNU tar)1.29を実行しています。

答え1

ブレーキ拡張はshではなくbashでのみ機能します。 Shebangがbashに設定されていることを確認してください。

#!/usr/bin/env bash

スクリプトを実行可能にして直接呼び出します。

chmod +x myscript.sh
./myscript.sh

コマンドの前にechoを追加して、いつでも拡張を確認できます。

echo tar --exclude=out/pictures/\*.{jpg,gif,png,jpeg} --exclude=tmp/\*.{txt,php} --exclude=log/\*.{log,sql} -cvf /backups/mydomain.tar -C /var/www/vhosts/mydomain.com/httpdocs content

答え2

まあ、今日は重要なことを学びました。

Bash シェルは中括弧拡張をサポートします。 shシェル(shはシェルですか?)しかしそうではありません。

私のようにスクリプトを実行すると、sh myscript.shshシェルを使用してスクリプトが実行されます。bash myscript.shすぐに適用されます。

しかし、shファイルのリンクに#!/bin/bashbashを使用してスクリプトを実行させることはできませんか?

誰かがこれを説明できますか?少し混乱しています。

これを./script.shとして実行すると、カーネルは最初の行(shebang)を読み、次にbashを呼び出してスクリプトを解釈します。システムのデフォルトのshが使用するシェルを使用してsh script.shとして実行します(UbuntuではDashであり、shと互換性がありますが、Bashの一部のアドインはサポートされていません)。

それがすべてを説明しますが、私のUbuntuのデフォルトシェルecho $SHELLはbashです(この引用は2010年のものなので、当時Ubuntuのデフォルトシェルはダッシュであると仮定します)。

に該当しても理解したいと思いますbash myscript.sh

答え3

試してみてください:

tar --exclude="out/pictures/*.{jpg,gif,png,jpeg}" -cvf /backups/mydomain.tar -C "/var/www/vhosts/mydomain.com/httpdocs content"

関連情報