gpt4 book ai didi

linux - 用于制作数据库备份的 Shell 脚本只能在提示符下运行

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:09:52 25 4
gpt4 key购买 nike

我有一个 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。有人知道为什么吗?

最佳答案

如果不指定您的 shell,您将默认获得/bin/sh(已在 Ubuntu 14.04 上测试)。 sh 内置的 [ 不支持 == 运算符,所以 sh 不知道如何比较 $dbmyDBase 第 20 行。

您应该始终以“#!”开始您的脚本。行来指定一个 shell 。要获得 bash,第一行应该是 #!/bin/bash

关于linux - 用于制作数据库备份的 Shell 脚本只能在提示符下运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39210254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com