Пока пользовательский ввод не равен что-то делать
Итак, кто-то показал мне, как использовать условие(ы), чтобы проверить, набрал ли пользователь ввод пароля. Я хочу взять их пример на шаг дальше и использовать цикл (по крайней мере, это то, что я думаю, что это называется).
вот пример:
read -s -p "Enter new password: " NEWPASS
if test "$NEWPASS" = ""; then
echo "Password CAN NOT be blank re-run sshd_config"
exit 1;
fi
вместо выхода из скрипта я хочу, чтобы он продолжал запрашивать ввод, пока он не появится.
Я хочу сделать такое заявление, но я делал это неправильно: (Теперь, используя верхний пример)
пользователь учитывая возможность ввести новый пароль и заполнить значение переменной.
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
Спасибо за всю помощь, я собираюсь использовать это и учиться на нем.
2 ответов
этот цикл while должен работать:
while [[ -z "$NEWPASS" ]]
do
read -s -p "Enter new password: " NEWPASS
done
while read -s -p 'Enter new password: ' NEWPASS && [[ -z "$NEWPASS" ]] ; do
echo "No-no, please, no blank passwords!"
done