* * * * * /root/attente.sh
我在 cron tab:和 attente.sh中有这个:export attente=$(cat /root/switchboard.txt)
如果我export attente=$(cat /root/switchboard.txt)
在 shell 中运行,它可以工作,但在 cron 作业中却不行。
请问有什么想法吗?
答案1
Linux/Unix 中环境变量的工作方式是针对每个进程而不是整个系统。
因此,如果您设置了环境变量,它将只会影响您设置它的那个进程。
如果您将其导出,则意味着它将保留在该进程产生的进程中。因此,在 shell 或 shell 脚本中,导出的环境变量将在从该 shell 启动的命令中可用。
但是,您在特定进程中设置的环境变量不会影响已经运行的进程,或者从导出变量的进程以外的其他进程(如 shell 或 shell 脚本)产生的进程。
因此,如果您打算从该 cron 更新您的 shell 环境,很遗憾,它不起作用。
答案2
我终于找到了解决方法。我不存储变量,而是使用 FILE 函数在星号中比较包含该值的文件的第一行与第一行具有不同值的其他文件(一个文件为“1”,另一个文件为“2”等)。但如果有人能解决最初的问题,我仍然很感兴趣。
谢谢