下面的脚本仅在数组大小为零时才进入 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,您可能会得到正确的输出。