Bash 忽略 zip -x 参数

Bash 忽略 zip -x 参数

下面的脚本在从 bash 运行时会忽略所有 -x 排除参数,但它在命令行中运行良好:

#!/bin/sh
TIMESTAMP=$(date +%u)
ulimit -s 65536

WEEK=`date +"%V"`
if [ $(($WEEK%2)) -eq 0 ];
then
    echo "even";
    BACKUP_DIR="/mnt/backup/2_$TIMESTAMP"
    mkdir -p "$BACKUP_DIR/www"
else
    echo "odd";
    BACKUP_DIR="/mnt/backup/1_$TIMESTAMP"
    mkdir -p "$BACKUP_DIR/www"  
fi

if [ $(date +%u) -gt 6 ];
then
    /usr/bin/zip -r -y $BACKUP_DIR/www/web.zip /var/www/ -x '*/.opcache/*' -x '*/phpThumb/cache/*'
else
    /usr/bin/zip -r -y $BACKUP_DIR/www/web.zip /var/www/ -x '*/mycompany/files/*' -x '*/.opcache/*' -x '*/xml_extras/*' -x '*/files_admin/extras/*' -x '*/chatFiles/*' -x '*/phpThumb/cache/*' -x '*/backup-guard/*' -x '*/mailer/*' -x '*/mycompany/attachments/*'
fi

exit 0

这是一个 14 天的备份解决方案,我希望工作日忽略较大的文件夹(如图像)。-x 参数被忽略的原因是什么?

答案1

我通过删除前面的“*/”并使用绝对路径解决了这个问题。我仍然不知道为什么这些在终端中有效,为什么在具有正确括号和转义的脚本中无效。

相关内容