bash에서 읽은 단일 문자의 예기치 않은 입력 잡기

bash에서 읽은 단일 문자의 예기치 않은 입력 잡기

때때로 사용자에게 확인을 요청하는 bash 스크립트가 있습니다. 단일 문자를 읽은 다음 이를 소문자로 변환하고 "y"인지 확인하여 이 작업을 수행합니다. 그렇지 않은 경우 스크립트가 종료됩니다.

이제 읽기 입력에서 Enter 키를 누르면 error: unary operator expected이 문제를 방지하거나 오류를 잡을 수 있습니까?

코드 세그먼트:

echo -ne "Confirm [y/n]: "
read -n1 uc

if [ ${uc,,} != "y" ]
then
    exit 0
fi

답변1

다음 명령문은 정상적으로 작동합니다.

if [ "${uc,,}" != "y" ]

설명: uc비어 있으면 테스트는 다음과 같이 셸에 의해 확장됩니다.

if [  != "y" ]

그리고 따옴표가 있는 것은

if [ "" != "y" ]

경험 법칙:언제나문자열이 포함된 쉘 변수를 확장할 때 따옴표를 사용하십시오. 공백이 포함되어 있거나 비어 있을 수 있으며, 따옴표가 없으면 전달된 명령이 혼동되는 경우가 많습니다(인수가 너무 많거나 인수가 누락됨).

관련 정보