変数をファイルにインポートしようとしていますが、何らかの理由でそれを行うことはできません。コードは次のとおりです。
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
。theodore
date.txt