Bash while循环

时间:2016-04-07 18:37:31

标签: bash

我正在尝试制作一个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

这是我到目前为止所做的一切。每当我在'再次尝试或输入退出退出'后输入用户名时,它将再次回显它。我希望能够指责用户而不是再次回复它。我看了很多地方,找不到答案。

提前谢谢。

2 个答案:

答案 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

我明白了。我不得不在其中添加一个额外的功能。谢谢你的帮助。