한 줄 읽기 확인 [닫기]

한 줄 읽기 확인 [닫기]

나는 이 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")

관련 정보