Я пытаюсь сделать цикл while. Этот цикл должен либо повторять «повторить попытку», либо ввести «exit to quit» при наборе таблеток или пальцевого пользователя, если вы набрали имя пользователя.Bash while loop
echo Please enter a user name to find.
read username
done_fn()
{
finger $username
exit 0
}
continue_fn()
{
echo 'try again or type exit to quit'
read exitvar
}
grep $username /etc/passwd >/dev/null
while [ $? -eq 0 ]
do
done_fn
done
exitvar=quit
until [ $exitvar = exit ]
do
continue_fn
done
while [ -u $exitvar ]
do
done_fn
done
Это все, что у меня есть. Всякий раз, когда я набираю имя пользователя после того, как «повторите попытку или введите exit to quit», он просто повторит его снова. Я бы хотел, чтобы он пальцем пользователя, а не повторять его снова. Я смотрел во многих местах и не могу найти ответ.
Заранее спасибо.
Можете ли вы поделиться результатами, которые получаете? Чтобы показать неправильное поведение? –
Научитесь использовать функцию отладки/трассировки оболочки и проблемные линии окружения с отключением 'set -vx' и' set + vx'. Вы увидите, что ваш код отображается, а затем выполнен. Строки с + на передней панели показывают, какие значения были заменены именами переменных. В режиме отладки все цитирование «отключено» функцией отладки/трассировки для одиночного кавычки. Вы должны сразу увидеть, что ваша проблема с 'grep', за которой следует' while'. Удачи! – shellter
Как только я запустил его и набрал правильного пользователя, он пальцы пользователя. если я набираю тарабарщину, он выдает «попробуйте еще раз или введите exit to quit», и как только я попытаюсь ввести правильного пользователя, он продолжит вывод: «попробуйте еще раз или введите exit для выхода». username_loop.sh Введите имя пользователя для поиска. jmalley2 Логин: jmalley2 Имя: Joseph Malley username_loop.sh Введите имя пользователя, чтобы его найти. asdfasdfasfasf попытку или тип выхода бросить jmalley2 попробовать еще раз или тип выхода бросить –