Break down a cron expression into human-readable field descriptions.
Code
Utilitiesread -r min hour dom mon dow <<< "$expr"
explain_field() {
local val="$1" name="$2" every="$3"
if [[ "$val" == "*" ]]; then
echo "$name: $every"
elif [[ "$val" == *"/"* ]]; then
echo "$name: every ${val#*/} ${name}s"
elif [[ "$val" == *"-"* ]]; then
echo "$name: ${val/-/ through }"
elif [[ "$val" == *","* ]]; then
echo "$name: ${val//,/, }"
else
echo "$name: $val"
fi
}
explain_field "$min" "minute" "every minute"
explain_field "$hour" "hour" "every hour"
explain_field "$dom" "day" "every day"
explain_field "$mon" "month" "every month"
explain_field "$dow" "weekday" "every day"Parameters
Cron expression (5 fields).
Server
More Bash Snippets
Common Cron Schedules
Generate cron expressions for common scheduling patterns like daily, weekly, or hourly.
Validate Cron Expression
Check if a cron expression has valid format with 5 fields.
Array Difference
Find elements in the first array that are not present in the second array.
Array Frequencies
Count how many times each value appears in an array and return a frequency map.
Array Head
Get the first n elements of an array.
Array Intersection
Find common elements that exist in both arrays.