Mysql cli未在crontab运行的bash脚本中返回数据

Mysql cli未在crontab运行的bash脚本中返回数据,mysql,bash,cron,Mysql,Bash,Cron,我有一个通过cron作业执行的bash脚本 #!/bin/bash # abort on errors set -e ABS_DIR=/path/ # extract the creds for the mysql db DB_USER="USERNAME" DB_PASS="PASSWORD" function extract_data() { file=$2 sql_query=`cat $ABS_DIR/$1` data=`mysql

我有一个通过cron作业执行的bash脚本

#!/bin/bash

# abort on errors
set -e

ABS_DIR=/path/

# extract the creds for the mysql db
DB_USER="USERNAME"
DB_PASS="PASSWORD"

function extract_data() {
        file=$2
        sql_query=`cat $ABS_DIR/$1`
        data=`mysql -u $DB_USER --password="$DB_PASS" -D "database" -e "$sql_query" | tail -n +2`

        echo -e "Data:"
        echo -e "$data"
}

extract_data "sql_query.sql" "log.csv"
当使用
bash extract.sh
手动运行它时,
mysql
cmd正确地获取数据,我在控制台上看到
echo-e“$data”

通过cron作业运行脚本时

* 12 * * * /.../extract.sh > /.../cron_log.txt

然后我得到一个保存到
cron_log.txt
文件中的空行

这是一个常见问题;从用户shell和从crontab运行时,脚本的行为不同。原因通常是由于用户shell和crontab shell中的环境变量不同;默认情况下,它们是不同的

要开始调试此问题,您可以从crontab引导stderr和stdout,希望捕获一条错误消息:

extract.sh &> /.../cron_log.txt
(注意&)


另外:您有三个点(
/…/
)——这可能是打字错误,也可能是原因。

这是一个常见问题;从用户shell和从crontab运行时,脚本的行为不同。原因通常是由于用户shell和crontab shell中的环境变量不同;默认情况下,它们是不同的

要开始调试此问题,您可以从crontab引导stderr和stdout,希望捕获一条错误消息:

extract.sh &> /.../cron_log.txt
(注意&)


另外:您有三个点(
/…/
)——这可能是打字错误,也可能是原因。

我添加了输出重定向,但是没有返回错误;
只是实际路径的占位符,我添加了输出重定向,但是没有返回错误;
只是实际路径的占位符