我有一个可以在命令提示符下正常运行的shell脚本,但是从我的cron作业中会抛出该脚本 unexpected operator
BACKUP=/var/www/backups/mysql
NOW=$(date +"%Y%m%d-%H%M")
MUSER="root"
MPASS="secr3T"
MHOST="localhost"
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
GZIP="$(which gzip)"
find $BACKUP/* -mtime +15 -exec rm {} \;
DBS="$($MYSQL -h $MHOST -u $MUSER -p$MPASS -Bse 'show databases')"
for db in $DBS
do
if [ "$db" == "myDBase" ]; then
if [ "$db" != "performance_schema" ]; then
FILE=$BACKUP/mysql_backup_$db.$NOW.tar.gz
$MYSQLDUMP -h $MHOST -u $MUSER -p$MPASS $db | $GZIP -9 > $FILE
echo $db
fi
fi
done
我正在使用crontab访问脚本 20 0 * * * var/www/backups/backup.site.sh
我得到的错误是:
/var/www/backups/backup.mysql.sh: 20: [: information_schema: unexpected operator
/var/www/backups/backup.mysql.sh: 20: [: mysql: unexpected operator
/var/www/backups/backup.mysql.sh: 20: [: olb: unexpected operator
/var/www/backups/backup.mysql.sh: 20: [: performance_schema: unexpected operator
我正在Ubuntu 14.04上运行最新版本的mySQL。有人知道为什么吗?
在不指定外壳的情况下,默认情况下将获得/ bin / sh(在Ubuntu 14.04上测试)。[
sh的内置函数不支持该==
运算符,因此sh不知道如何进行比较,$db
并且myDBase
在第20行。
您应该始终以“#!”开始脚本。指定外壳的行。要获得重击,第一行将是#!/bin/bash
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句