У меня есть следующая функция
function executeMySql() {
while IFS= read -p "$prompt" -r -s -n 1 char
do
if [[ $char == $'\0' ]]; then
break
fi
if [[ $char == $'\177' ]]; then
prompt=$'\b \b'
password="${password%?}"
else
prompt='*'
password+="$char"
fi
done
mysql -u root -p$password -e "$1"
ret=$?
if [ $ret = "0" ]; then
# Show success message
printf "\e[32m\nSUCCESS: $2\n\n"
tput sgr0
else
echo "Wrong password"
fi
}
и я использую это так
echo -e "Enter your mysql \$root password to create the db"
executeMySql "CREATE DATABASE IF NOT EXISTS Test" "Test db ready"
{
touch /var/moo.txt
} || {
# ...
}
Но если пользователь вводит неправильный пароль mysql, он получает сообщение « Wrong password
и сценарий продолжается, но я хочу зациклить попытки ввода пароля пользователя, пока он не будет успешным, и затем продолжить выполнение сценария.
Есть идеи, как этого добиться?