奇妙な状況に直面して検索しましたが、何も見つかりませんでした。日付を取得して72時間を追加するbashスクリプトがあります。端末で実行しても問題はありませんが、cronjobで実行するとエラーが発生します。
if [ $# -eq 3 ] ; then
# ----------
# PARAMETERS
# ----------
start_YYYYMMDDHH=${1}
ini_YYYYMMDDHH=${2}
flen=${3}
ini_HH=${ini_YYYYMMDDHH:8:2}
start_YYYY=${start_YYYYMMDDHH:0:4}
start_MM=${start_YYYYMMDDHH:4:2}
start_DD=${start_YYYYMMDDHH:6:2}
start_HH=${start_YYYYMMDDHH:8:2}
start_II=00
start_SS=00
end_YYYYMMDDHH=`date --utc +%Y%m%d%H%i%s -d "${start_YYYY}-${start_MM}-${start_DD} ${start_HH}:${start_II}:${start_SS} UTC +${flen} hours"`
end_YYYYMMDDHH=${end_YYYYMMDDHH:0:10}
end_YYYY=${end_YYYYMMDDHH:0:4}
end_MM=${end_YYYYMMDDHH:4:2}
end_DD=${end_YYYYMMDDHH:6:2}
end_HH=${end_YYYYMMDDHH:8:2}
end_II=00
end_SS=00
cronを介して実行すると、次のエラーが発生します。
日付:追加のオペランド「-d」詳細については、「date --help」を試してください。
なぜこれが起こるのか知っていますか?
答え1
cronが実行されている場合はパス設定が異なるため、cronスクリプトまたはサービスでは常に絶対パスを使用してください。
答え2
解決策が見つかりました。
end_YYYYMMDDHH=$(date --date="${start_YYYY}-${start_MM}-${start_DD} ${start_HH}:${start_II}:${start_SS} UTC +${flen} hours" -u "+%Y%m%d%H")
-u "+%Y%m%d%H"
うまくいきますが、何らかの理由でこの部分をコマンドの先頭に移動するとエラーが発生します。
非常に奇妙なことに、同じコマンドが他のコンピュータでも動作します!