Логическими операторами в оболочке являются &&
и ||
. &
и |
делают очень разные вещи (запускают фоновую задачу и устанавливают канал между двумя процессами соответственно ).
#!/bin/sh
number1=1
while [ "$number1" -le 12 ]; do
number2=$( some command )
case $number2 in
200)
break
;;
""|404)
# nothing
;;
*)
printf 'Unexpected: number2 = %s\n' "$number2" >&2
exit 1
esac
number1=$(( number1 + 1 ))
done
Число в $number2
выглядит как код состояния HTTP. Проверка значения в операторе case
, как указано выше, позволит вам выбрать правильное действие при любом количестве кодов состояния, не превращая шелл-код в громоздкий беспорядок из операторов if
-. Например, действие для любого кода сбоя клиента или сервера может быть вызвано шаблоном 4??|5??
.
Это также логически разделяет семантику двух переменных. Переменная number1
управляет количеством итераций, в то время как number2
предназначена исключительно для управления действием, которое должно быть выполнено на основе результата вашей загадочной команды.
Добавление пользователя в cron.deny
не приведет к остановке/прекращению текущего задания для этого пользователя. Добавление пользователя в cron.deny
только заблокирует возможность этого пользователя использовать только команду crontab
.
изman crontab
:
ЗначениеIf the /etc/cron.allow file exists, then you must be listed (one user per line) therein in order to be allowed to use this command. If the /etc/cron.allow file does not exist but the /etc/cron.deny file does exist, then you must not be listed in the /etc/cron.deny file in order to use this command.
this command
выше относится к самой команде crontab
.