スクリプトとcronジョブを手動で実行するときの異なる出力

スクリプトとcronジョブを手動で実行するときの異なる出力

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

関連情報