Portál AbcLinuxu, 6. května 2025 22:59
if [ -z $(echo $char | sed -e 's/[0-9]//g')Má někdo už nějaké vymyšlené řešení?
Pohodlnější je to vyřešit v Pythonu.
$ vim input_cron_example.py #!/usr/bin/python2.5 # -*- coding: utf-8 -*- items = [] items.append({"name": "Hour", "min": 0, "max": 23}) items.append({"name": "Minute", "min": 0, "max": 59}) msg = "" values = {} for item in items: while (True): try: value = raw_input("%s (must be <%i; %i>): " % (item["name"], item["min"], item["max"])) value = int(value) if (value >= item["min"]) and (value <= item["max"]): values.update({item["name"]: value}) break except: continue print "%(Hour)s %(Minute)s * * * command" % values $ chmod +x input_cron_example.py $ ./input_cron_example.py Hour (must be <0; 23>): neplatna hodnota Hour (must be <0; 23>): 26 Hour (must be <0; 23>): 23 Minute (must be <0; 59>): -1 Minute (must be <0; 59>): 55 23 55 * * * command
BTW: Nezapomeň, že uživatel má větší možnosti, než jen zadat jedno číslo:
minute 0-59 hour 0-23 day of month 1-31 month 1-12 (or names, see below) day of week 0-7 (0 or 7 is Sun, or use names) */2 0-23/2 0-4,8-12 1,2,5,9 8-11 @reboot Run once, at startup. @yearly Run once a year, "0 0 1 1 *". @annually (same as @yearly) @monthly Run once a month, "0 0 1 * *". @weekly Run once a week, "0 0 * * 0". @daily Run once a day, "0 0 * * *". @midnight (same as @daily) @hourly Run once an hour, "0 * * * *".
read -p Hodina value if [[ ! "$value" =~ ^[[:digit:]]+$ ]]; then echo "Value \"$value\" is not a digit." fi if [[ "$value" -lt "0" || "$value" -gt "23" ]]; then echo "Value \"$value\" out of range [0..23]." fi
(echo "15 20 * * * sh script"; crontab -l) | crontab -
, pokud ne něco lepšího.
crontab -e
crontab -l |grep -v "sh script" >/tmp/crontab.$$ #(1) echo "15 20 * * * sh script" >>/tmp/crontab.$$ #(2) crontab /tmp/crontab.$$ #(3) rm /tmp/crontab.$$ #(4)(1) - vypíše crontab do souboru a při té příležitosti se pro jistotu vyloučí daný script aby tam pak nebyl dvakrát.
EDITOR="echo '15 20 * * * sh script' > " crontab -e
crontab
snad ano, ale obecně se nemůžete spolehnout, že crontab
ten "editor" bude spouštět přes shell.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.