如何在 crontab 中使用文件内容作为参数

如何在 crontab 中使用文件内容作为参数

我有一个包含单个 IP 地址的文件(“IPcontainer”),我想像这样使用它:

6tunnel 80 $(< IPcontainer) 80

不幸的是,这只有当我手动执行时才有效,而不是像下面这样将其用作 cronjob 时:

0 * * * * 6tunnel 80 $(< /home/<MYUSERNAME>/IPcontainer) 80

据我所知,cron 依赖于绝对路径。

我需要如何改变它才能使其正常工作?

答案1

这是因为默认cron使用/bin/sh- 不支持$(< file)语法

您可以更换

$(< /home/<MYUSERNAME>/IPcontainer)

由 POSIX

$(cat /home/<MYUSERNAME>/IPcontainer)

或者cron明确告诉使用 bash

SHELL=/bin/bash
0 * * * * 6tunnel 80 $(< /home/<MYUSERNAME>/IPcontainer) 80

也可以看看

相关内容