CRON の正規表現を記述するための最良の方法に関する推奨事項はありますか?
もう少しうまく説明させてください。CRON のフィールドに対応する個々の変数を含む構成ファイルがあります。各フィールドが有効であることを確認する必要があります。つまり、秒の場合は 0 ~ 59、月の場合は 0 ~ 31 などです。sed を使用して CRON を更新していますが、構成ファイルに構文エラー (偶発的な余分な文字、文字、CRON が好まないもの) がある場合、結果は悲惨なものになります (CRON ファイル)破壊されています)
考えられるすべての数字とワイルドカードを確認し、それ以外の場合はエラーをスローする必要があります。疲れているだけなのか、それとも何なのかはわかりませんが、これについて論理的に始めることはできないようです。
コーディングだけでなく、あらゆる提案を受け入れます。CRON が破壊されないようにする方法、おそらく個々の変数ではなく、CRON の 1 つの文字列 (構成ファイル内) ですべてを編集する
助けてくれてありがとう
これが構成の例です。とてもシンプルです。
# SUMMARY REPORT FREQUENCY ( * Wildcards acceptable )
MIN="30"
HOUR="*"
DAY="12"
MON="*"
WEEK="*"
* アップデート *
Bash 4.2.25 に同梱されている Ubuntu 12.04 LTS
これが更新を行っているコードです。
function REPORT.CHECK {
sleep 1s
if [ "`crontab -l | grep report.sh`" \> " " ]; then
CTMP="$(set -f; crontab -l | grep report.sh)"
if [ "$CTMP" = "$MIN $HOUR $DAY $MON $WEEK cd $DIR && ./report.sh" ]; then
if [ "$DISABLE" = "false" ]; then
RETURN="true"
fi
else
if [ "$DISABLE" = "false" ]; then
CTMPESC=$(sed 's/[\*\.&]/\\&/g' <<<"$CTMP")
DIRESC=$(sed 's/[\*\.&]/\\&/g' <<<"$DIR")
crontab -l | sed "s%$CTMPESC%/$MIN /$HOUR /$DAY /$MON /$WEEK cd $DIRESC \&\& \./report\.sh" | crontab -
RETURN="update"
fi
fi
if [ "$DISABLE" = "true" ]; then
crontab -l | grep -F -v report.sh | crontab -
RETURN="disable"
fi
else
if [ "$DISABLE" = "true" ]; then
RETURN="exit"
else
(crontab -l ; echo "$MIN $HOUR $DAY $MON $WEEK cd $DIR && ./report.sh") | crontab -
RETURN="default"
fi
fi
}
このコードの抜粋は、実際にはかなりのことを行います。エントリが存在しない場合は、CRON に追加します。また、この部分(レポート部分)が構成で無効になっている場合はスクリプトを強制終了し(終了を返します)、CRONの内容が構成の内容と異なる場合はCRONを更新し、最後に構成が同一の場合CRONの内容まで、無視して先に進みます。これらの機能は適切ではありません。うまくいけば、それで十分な詳細が追加されます笑。