提示输入用户名,直到在文件中找不到名称

提示输入用户名,直到在文件中找不到名称

我正在尝试将变量 grep 到文件中,但由于某种原因我不能。这是代码:

 while [[ $user ]]
                    do
                            read user
                            if grep -q "^${user}" date.txt; then
                            echo This user already exists 
                            read user
                    else
                            break
                            fi
                    done

如果找不到用户,它应该中断 while 循环。但我无法使这个工作,我不知道为什么

答案1

看起来您正在编写某种形式的验证输入循环。

这通常是在无限循环中完成的,一旦输入有效输入就退出:

while true; do
    read data

    if data-is-valid; then
        break
    fi
done

在你的情况下:

while true; do
    read -r -p 'Enter username: ' username

    if ! grep -q -e "^$username\>" date.txt; then
        break
    fi

    echo 'User already exists, try again' >&2
done

\>命令中的模式通过要求单词直接在字符串之后结束来grep确保用户与文件中的theo用户不匹配。theodoredate.txt

相关内容