我試圖做一個while循環。 如果輸入用戶名稱,則在輸入亂碼或用戶手指時,此循環應回顯「再次嘗試或輸入退出以退出」。Bash 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
這是我到目前爲止得到的一切。每當我在'再試一次或輸入exit退出'之後輸入用戶名,它就會再次回顯。我希望它能指示用戶而不是再次回顯。我看了很多地方,找不到答案。
預先感謝您。
你能分享你得到的輸出嗎?顯示錯誤的行爲? –
學習使用shell調試/跟蹤功能,並用'set -vx'和'set + vx'關閉有問題的行關閉。你會看到你的代碼顯示,然後執行。前面加上+的行顯示了變量名稱取代了什麼值。在調試模式下,所有引用都由調試/跟蹤功能「簡化」爲單引號。你應該立刻看到你的問題是在'grep'後面跟着'while'。祝你好運! – shellter
一旦我運行它並鍵入一個正確的用戶,它會指示用戶。如果我輸入亂碼,輸出'再試一次或輸入exit退出',一旦我嘗試輸入一個正確的用戶,它會繼續輸出'再試一次或輸入exit退出'。 username_loop.sh 請輸入用戶名稱以查找。 jmalley2 登錄:jmalley2姓名:Joseph Malley username_loop.sh 請輸入用戶名以便查找。 asdfasdfasfasf 再試一次或鍵入exit退出 jmalley2 再試一次或鍵入exit退出 –