通过 cron 运行封装在 bash 函数中的 python 脚本

通过 cron 运行封装在 bash 函数中的 python 脚本

我有一个 python 脚本,我将其封装在 bash 函数中。我希望能够将此函数作为 cron 作业调用,但我似乎无法让 cron 执行它。
函数如下:

 #!/bin/bash

getmail(){
    local interp=/path/python3
    local cmd=/path/python-script
    local logfile=/path/logfile

    if [ "$1" == "-logs" ]; then 
        $interp $cmd >> $logfile

    else 
        $interp $cmd
     fi
 }

然后我创建了一个脚本来获取该函数并执行它,我希望能够从 cron 调用该函数。

 #!/bin/bash

  source /path/getmail
  getmail

我已经为这个 cron 脚本分配了适当的权限,使其可执行,但 cron 不会运行该脚本。我可以通过 cron 运行 python 脚本本身,但不能封装在 bash 函数中。我只是想知道为什么。这可能与 cron 使用的解释器有关吗?我已经在 cron 选项卡中设置了 SHELL=/bin/bash 。有人能为我解释一下吗?

答案1

你怎么确定它不起作用?
事实上,你所做的应该几乎有效。
只需要评论两件事:
1. 包含该函数的文件中的 '#!/bin/bash/ 不是必需的,并且由于该文件是来源的,因此没有任何功能。
2.“-logs”参数永远不会进入“getmail()”函数,因为您在没有任何参数的情况下(从脚本中)调用该函数。
对 bash 脚本进行以下修改,然后重试:

#!/bin/bash

source /path/getmail
getmail $@

这应该将给 bash 脚本的所有参数“转发”到函数中。

相关内容