Cron 作业不会读取 shell 脚本函数

Cron 作业不会读取 shell 脚本函数

我遇到了一个奇怪的情况,cron 作业正在执行一个脚本,但并未读取该函数。是的,我知道,太阳耀斑。

严肃地说,这里的想法是,我有一个.sh脚本,可以启动对我的环境的扫描。下面您可以看到它的摘录。该脚本成功创建了输出文件,我可以echo "Is this line parsed or not?" >> $output在输出中找到此行。但是,函数中的下一个 echoecho "I'm in the function!" >> $output未记录。脚本在函数声明处停止,就是这样。

我感到很困惑。有什么想法吗?谢谢!

.....
    touch $output
    # with this we are creating an empty file

    echo "Is this line parsed or not?" >> $output

    function do_the_scan() {
    # Load text file lines into a bash array.
    echo "I'm in the function!" >> $output
.....

答案1

您的函数声明语法错误。您应该使用:

do_the_scan() {
    # Load text file lines into a bash array.
    echo "I'm in the function!" >> $output
}

…除非脚本在 Bash 中运行,因为function巴什主义

这是交互式 shell 中错误的演示:

> sh
$ function bar() {
sh: 1: Syntax error: "(" unexpected
$

无论如何,你应该使用以下方法捕获脚本的错误输出:标准错误输出重定向(例如2> err.log)。将其直接放在 crontab 中的命令行上,这样它就可以捕获脚本解释器产生的错误。

也可以看看

相关内容