Пока пользовательский ввод не будет чем-то

Итак, кто-то показал мне, как использовать условие (ы), чтобы проверить, набрал ли пользователь ввод пароля. Я хочу сделать свой пример еще одним шагом и использовать цикл (по крайней мере, то, что, как мне кажется, он вызывает).

Вот их пример:

read -s -p "Enter new password: " NEWPASS

if test "$NEWPASS" = ""; then
    echo "Password CAN NOT be blank re-run sshd_config"
    exit 1;
fi

Вместо выхода из script я хочу, чтобы он продолжал просить ввод до тех пор, пока он не появится.

Я хочу сделать такое выражение, но я делал это неправильно: (Теперь, используя верхний пример)

Пользователю предоставляется возможность ввести новый пароль и заполнить значение переменной.

read -s -p "Enter new password:" NEWPASS
echo ""

Следующая часть проверяет переменную, чтобы увидеть, содержит ли она значение, в то время как значение равно null, оно запрашивает у пользователя бесконечное значение. (цикл)

while [[ -z "$NEWPASS" ]]; do
echo ""
echo "Password CAN NOT be blank"
echo ""
read -s -p "Enter new password:" NEWPASS;
echo ""
done

Эта строка ищет файл, содержащий набор переменных, используемых другим файлом. Затем он ищет файл для строки, содержащей PASS =. * (. * Означает что угодно), а затем пишет PASS = $NEWPASS (переменная $NEWPASS)

sed -i -e"s/^PASS=.*/PASS=$NEWPASS/" /etc/sshd.conf   

Спасибо за помощь, я собираюсь использовать это и учиться на нем.

Ответ 1

Этот цикл while должен работать:

while [[ -z "$NEWPASS" ]]
do
  read -s -p "Enter new password: " NEWPASS
done

Ответ 2

while read -s -p 'Enter new password: ' NEWPASS && [[ -z "$NEWPASS" ]] ; do
 echo "No-no, please, no blank passwords!"
done