bash - Python 脚本手动工作,但不是来自 cron 作业

标签 bash python-3.x

我有一个 Python 脚本,它从环境变量中获取一段数据,如下所示:

password = os.environ["SomePassword"]

当我手动运行脚本时,脚本按预期工作,但是当脚本在 shell 文件中并由 cron 作业运行时,它在该行失败并显示“KeyError”,我假设它没有找到变量。

此外,当我以运行 cron 作业的同一用户身份运行以下任何命令时,我会按预期看到变量。

echo $SomePassword
env
printenv

这是怎么回事,我该如何解决?

更新: 我能够通过阅读建议的重复问题来解决此问题 - 但是,该问题并未描述其他人可能感兴趣的根本问题。

最佳答案

这是因为环境变量没有声明和赋值。

当您手动运行它时它会起作用,因为当您登录时,各种环境脚本会运行(例如 ~/.bashrc、~/.bash_profile,可能还有/etc/bashrc 之类的其他脚本)并且它们已经完成了此操作。

您可以通过创建一个简单的脚本来测试这一点,该脚本将所有环境变量保存到一个文件中并使用 cron 安排它。运行后,检查文件中的内容。

关于bash - Python 脚本手动工作,但不是来自 cron 作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50070773/

相关文章:

linux - Bash 颜色字符编码删除

bash - GNU 使 : How to wait "cp" command to finish

Python 添加键等于 8 的元素

python-3.x - 向 http.server.BaseHTTPRequestHandler 的子类添加一个新的实例变量

linux - 文本操作和删除

bash 提示符 : highlight command being entered

python - MyPy/python 类型提示不会捕获可以返回多种类型的被调用函数

Python 在列表理解中引发错误(或更好的替代方案)

linux - Curangle() 抛出此错误 - TypeError : float() argument must be a string or a number

bash - Shell:如何检查目录中是否不存在 .txt 文件?