"adduser" обычно используется в Linux, но если вы посмотрите на другие утилиты Shadow, --passwd, useradd, usermod --, они должны быть достаточно похожими. Shadow (что есть в Linux... )был основан на SVR1, к которому у меня был доступ, когда я начал писать его в 1987 году. «useradd» нужна опция «-m» для обработки домашнего каталога, так что не поставляйте это. А «passwd -l» блокирует пароль, вставляя недопустимый символ в поле пароля.
Чего вы хотите избежать, так это «изменения», поскольку это то, что я придумал. Даже если это что-то удобное.
Как число может быть одновременно меньше 5 и больше 20? Я думаю, ты хочешь:
while [ "$input" -lt 5 ] || [ "$input" -gt 20 ]
дополнительно вы должны повторно -запросить номер внутри цикла.
while [ "$input" -lt 5 ] || [ "$input" -gt 20 ]
do
read -rp "Your number wasn't within the range. Please re-enter" input
done
К вашему сведению, -параметр p для чтения не специфицирован POSIX, поэтому его поддержка во всех формах sh не гарантируется. Если эта программа предназначена для использования в нескольких малоизвестных операционных системах и переносимость имеет решающее значение, вы можете сделать что-то вроде:
printf '%s' "Your number wasn't within the range. Please re-enter: "
read -r input
Возможно, вам будет удобнее и понятнее писать:
while ! (( (5 <= input) && (input <= 20) )); do
echo "Your number wasn't within the range. Please re-enter"
done
Из вышеприведенного вы можете сразу увидеть, что он проверяет, находится ли input
между 5
и 20
, потому что это место, где имя переменной input
находится в коде.