변수를 파일로 가져오려고 하는데 어떤 이유로 그렇게 할 수 없습니다. 코드는 다음과 같습니다.
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