以下のスクリプトは、配列サイズが0の場合にのみ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にリダイレクトしようとすると、正しい出力が得られます。