我正在尝试制作一个while循环。 在输入乱码时,此循环应该回显“再次尝试或输入exit退出”,如果键入用户名,则应指向用户。
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
这是我到目前为止所做的一切。每当我在'再次尝试或输入退出退出'后输入用户名时,它将再次回显它。我希望能够指责用户而不是再次回复它。我看了很多地方,找不到答案。
提前谢谢。
答案 0 :(得分:1)
你可以试试这个:
typeset u="John Doe"
while ! grep -q "^$u:" /etc/passwd
do
echo -n "username? "
read u
if [[ $u = "q" ]]
then
exit
fi
done
finger $u
答案 1 :(得分:0)
echo Please enter a user name to find.
read username
donev2_fn()
{
finger $exitvar
exit 0
}
done_fn()
{
finger $username
exit 0
}
continue_fn()
{
echo 'try again or type exit to quit'
read exitvar
grep $exitvar /etc/passwd >/dev/null
if [ $? -eq 0 ]
then
donev2_fn
fi
}
grep $username /etc/passwd >/dev/null
while [ $? -eq 0 ]
do
done_fn
done
exitvar=quit
until [ $exitvar = exit ]
do
continue_fn
done
我明白了。我不得不在其中添加一个额外的功能。谢谢你的帮助。