手动执行脚本和 cron 作业时的不同输出

手动执行脚本和 cron 作业时的不同输出

下面的脚本仅在数组大小为零时才进入 if 循环。手动执行脚本时,脚本会给出正确的输出。但是当我使用 cronjob 运行相同的脚本时。默认情况下它正在执行 else 循环。

printf "%s\n" "${var[@]}"
if [ ${#var[@]} == 0 ];then
   echo "empty"
   #mailx -s "ALL RUNNING" [email protected] < /apps/lp/Start_Services/running.txt
else
   echo "else part"
   printf "%s\n" "${var[@]}" > filename.txt
   mailx -r [email protected]  -s "RHINE1  10.14.11.77 LOYALTY SERVER" [email protected] < /apps/lp/Start_Services/scm/filename.txt
   echo "I am here"
fi 

答案1

当您执行 cron 作业时,通常最好的做法是指定文件的完整路径。最有可能的问题就在这里:

printf "%s\n" "${var[@]}" > filename.txt

如果您尝试将输出重定向到 /apps/lp/Start_Services/scm/filename.txt,您可能会得到正确的输出。

相关内容