2015-01-18 2 views
0

Мой скрипт bash запрашивает у пользователя свое имя, фамилию, адрес и номер телефона и записывает эту информацию, которая вводится пользователем в файл формата «firstname.lastname»; однако я хочу повторить это несколько раз (я действительно хотел сделать что-то вроде цикла do..while, где он запускается по крайней мере один раз, и спрашивает пользователя, хотят ли они продолжать создавать учетные записи или нет, но я вижу, что этого не происходит. .. в то время как для bash кажется). Поэтому, когда я запускаю этот сценарий bash в терминале, он будет запрашивать, сколько учетных записей будет создано, и я предоставляю все входные данные, но он работает только один раз. Что я делаю не так? Вот мой сценарий.Завершение скрипта Bash после окончания файла

#!bin/bash 

echo "How many accounts are you creating?" 
read num 
echo "Enter first name" 
read fName 
echo "Enter last name" 
read lName 
echo "Enter address" 
read add 
echo "Enter phone number" 
read phn 
echo "Enter gender m for male and f for female" 
read gender 

if [ "$gender" == "m" ] 
    then 
     sex="male" 
elif [ "$gender" == "f" ] 
    then 
     sex="female" 
else 
    echo"Invalid gender. Restart the script and enter a valid gender" 
    exit 0 
fi 
for ((i = 0; i<=num; i++)) 
do 
    cat > $fName.$lName <<-EOF 
     Full Name: $fName $lName 
     Address: $add 
     Phone number: $phn 
     Gender: $gender 
    EOF 
done 

ответ

2

zerobandwidth является правильным, но как альтернативный ответ, это на самом деле очень легко сделать то, что вы изначально хотели сделать:

while true; do 
    # Your account creation code goes here 

    echo "Create another account (y/n)?" 
    read another 
    if [ "$another" != y ]; then 
     break 
    fi 
done 
+0

Извините за поздний комментарий. Спасибо тебе за это. Мой скрипт работает так же, как и сейчас. – croxfade

2

Поместите свой код ввода внутри цикла или оберните этот код в функцию и вызовите функцию внутри цикла. Ответ

Смежные вопросы