나는 이 read
작업을 수행했습니다:
read -p "Please enter your name:" username
한 줄로 사용자 이름을 확인하는 방법은 무엇입니까?
한 줄로 정상적인 방법으로 가능하지 않다면 Bash 함수를 변수에 넣는 것이 좋은 해결책이 될까요?
이름은 단지 예시일 뿐이며, 비밀번호나 기타 일반적인 형식 값일 수 있습니다.
여기서 유효성 검사란 사용자에게 이름을 두 번 입력하도록 요구하고 두 값이 동일한지 확인하는 것을 의미합니다.
답변1
사용자가 동일한 내용을 두 번 입력(또는 복사하여 붙여넣기...)하는 것은 일반적 read
으로 두 번의 호출, 두 개의 변수 및 비교를 통해 수행됩니다.
read -p "Please enter foo" bar1
read -p "Please enter foo again" bar2
if [ "$bar1" != "$bar2" ]; then
echo >&2 "foos did not match"
exit 1
fi
이는 while
루프 및 조건 변수를 사용하여 일치할 때까지 프롬프트와 확인을 반복하거나 입력 프롬프트가 많은 경우 함수 호출로 추상화할 수 있습니다.
답변2
thrig의 답변을 확장하고 요청한 기능을 포함하려면 다음을 수행하십시오.
기능
enter_thing () {
unset matched
while [[ -z "$matched" ]]; do
read -rp "Please enter $@: " thing1
read -rp "Please re-enter $@: " thing2
if [[ "$thing1" == "$thing2" ]]; then
matched=1
else
echo "Error! Input does not match" >&2
fi
done
echo "$thing2"
}
스크립트에서는 다음과 같이 호출할 수 있습니다.
username=$(enter_thing "name")
email=$(enter_thing "email")
password=$(enter_thing "password")