ファイルに名前が見つからないまでユーザー名の入力を求めるメッセージを表示する

ファイルに名前が見つからないまでユーザー名の入力を求めるメッセージを表示する

変数をファイルにインポートしようとしていますが、何らかの理由でそれを行うことはできません。コードは次のとおりです。

 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ユーザーがファイル内のユーザーと一致しないようにしますtheotheodoredate.txt

関連情報