【发布时间】:2016-04-07 18:37:30
【问题描述】:
我正在尝试创建一个 while 循环。 这个循环应该在输入胡言乱语时回显“重试或输入退出退出”,或者在输入用户名时指认用户。
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
这是我到目前为止所拥有的一切。每当我在“重试或键入退出退出”后输入用户名时,它只会再次回显。我希望它指点用户而不是再次呼应它。我找了很多地方都找不到答案。
提前谢谢你。
【问题讨论】:
-
你能分享你得到的输出吗?显示错误的行为?
-
学习使用 shell 调试/跟踪功能并用
set -vx和set +vx包围有问题的行以关闭。您将看到您的代码显示,然后执行。前面带有 + 的行显示了哪些值已替换为变量名。在调试模式下,所有引用都被调试/跟踪功能“归结”为单引号。您应该立即看到grep后跟while的问题。祝你好运! -
一旦我运行它并输入一个正确的用户,它就会指责用户。如果我输入胡言乱语,它会输出“再试一次或输入退出退出”,一旦我尝试输入正确的用户,它就会继续输出“再试一次或输入退出退出”。 username_loop.sh 请输入用户名进行查找。 jmalley2 登录名:jmalley2 姓名:Joseph Malley username_loop.sh 请输入用户名进行查找。 asdfasdfasfasf 再试一次或输入 exit 退出 jmalley2 再试一次或输入 exit 退出
-
JJM:最好通过包含测试来显示您的测试,并正确格式化到 Q 的正文中。使用编辑框左上方的
{}格式工具对突出显示的文本格式化为代码/数据/输出。再次祝你好运。 -
你有 3 个循环。尝试使用 if 语句在一个循环中更改它。
标签: bash