我遇到了一个奇怪的情况,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 中的命令行上,这样它就可以捕获脚本解释器产生的错误。