シェルスクリプトは、cronjobによって実行されるのではなく、端末で動作します。

シェルスクリプトは、cronjobによって実行されるのではなく、端末で動作します。

奇妙な状況に直面して検索しましたが、何も見つかりませんでした。日付を取得して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スクリプトまたはサービスでは常に絶対パスを使用してください。

おすすめ記事