【发布时间】:2019-03-09 09:12:20
【问题描述】:
我有以下脚本:
#!/bin/bash
echo "$(date +"%r")"
if [ "$FOLDER_ID" != "0" ]
then
node /sync.js -d $FOLDER_ID -l /Downloads
fi
我正在使用 docker 容器,并且在启动容器时我已经传递了环境变量 FOLDER_ID。该变量应该在启动 docker 容器时通过将其作为 ENV 传递来设置。
当我运行此脚本时,节点命令按预期运行,但当 cron 作业运行脚本时,它会打印日期但未正确执行节点命令(我认为问题与 $FOLDER_ID 有关变量)。
有什么建议吗? 谢谢
【问题讨论】:
-
你从来没有设置
FOLDER_ID,它应该来自哪里? -
Cron 作业不会运行像
.profile或.bashrc这样的 shell 启动脚本,如果这是您通常设置变量的位置。 -
您可以在 crontab 文件中设置环境变量,正如 this answer 所说。
-
Unix & Linux 可能是一个更好的地方来询问如何在 docker 容器中使环境变量成为全局变量。
-
我让脚本打印了环境,正如您所指出的,cron 环境中似乎缺少一些变量。有没有办法让 cron 作业在与 bash 命令行相同的环境中运行?