Я пытаюсь использовать цикл while для многократного запроса имени пользователя во время регистрации пользователя, пока не будет предоставлено действительное имя пользователя (то есть оно НЕ было заявлено).
К сожалению, я был толькопрограммирую на bash менее 70 часов, поэтому я не знал, как это сделать.Сначала я думал использовать goto, как в пакетных сценариях Windows, если возникла проблема с именем пользователя, но, видимо, в bash это не так, и циклы кажутся рекомендуемым маршрутом.Я не был знаком с циклами в bash, поэтому провел некоторое исследование, пока не нашел хороший ответ на вопрос о том, как это сделать.Это не точный пост (я не могу найти его сейчас), но я смотрел на вопросы , как этот .
Полученный код выглядит так:
echo -e "Now, choose a unique username. No special characters, please."
uniqueuser=0 # Assume a valid username has not been chosen from the get-go
while [ "$uniqueuser" == "0" ]
do
read -p "Username: " username
lusername=`echo $username | sed y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/` #lowercase username
if [ "$lusername" == "admin" ] || [ "$lusername" == "administrator" ] || [ "$lusername" == "npstn" ] || [ "$lusername" == "phreak" ] || [ "$lusername" == "guest" ] || [ "$lusername" == "user" ] || [ "$lusername" == "sysop" ]
then
echo -e "That username is reserved. Please pick another username."
else
username=`php /home/com/encode.php "$username"`
available=`curl "https://example.com/redacted/redacted.php?key=$key&type=checkusername&username=$username" --silent`
if [ "$available" == "1" ]
then
uniqueuser=$((1)) # Username is unique and acceptable
else
echo -e "That username is taken. Please choose another one."
fi
fi
done <input.data # so that username variable persists outside of while loop
echo -e "That username is available... or was... now, it's yours!"
echo -e "On this board, we have no annoying password length or complexity requirements. That said, your password cannot be null, nor can it use the plus symbol. Choose wisely!"
Когда эта часть сценария оболочки достигнута, я вижу:
Now, choose a unique username. No special characters, please.
/home/com/redacted.sh: line 4: input.data: No such file or directory
That username is available... or was... now, it's yours!
On this board, we have no annoying password length or complexity requirements. That said, your password cannot be null, nor can it use the plus symbol. Choose wisely!
Причина, по которой "input.data" используется для получения переменной $ username из подоболочки и возврата восновная оболочка.Однако, это, кажется, вызывает ошибку.Как я могу это исправить?