2012-10-22 2 views
2

ksh에서 셸 스크립트를 사용합니다. 입력 후 스크립트는 입력을 확인하기 위해 예를 Y로 입력하고 아니요를 N을 입력하라는 메시지를 표시합니다.쉘 스크립트에서 예를 Y로 입력하고 아니요를 N으로 입력합니다.

echo "" 

YN="" 
while [ "x$YN" != "xn" -a "x$YN" != "xN" -a "x$YN" != "xy" -a "x$YN" != "xY" ]; do 
    echo -n "Please confirm (y/n): " 
    read YN 
done 

if [ "x$YN" = "xn" -o "x$YN" = "xN" ]; then 
    exit 0 
fi 

내가

while [ "x$YN" != "xn" -a "x$YN" != "xN" -a "x$YN" != "xy" -a "x$YN" != "xY" ]; 

친절 전년 동기 대비이 점에서 나를 도울 수 이해할 수 아니에요 .. 사실

+0

'if'에서 변수를 확인하기 전에 변수의 대/소문자를 대문자 또는 소문자로 변경하면 코드가 정확하고 읽기 쉽습니다. – mtk

답변

1

이 같이 작성해야합니다 : 아래는 스크립트의 일부입니다

while [ "$YN" != "n" -a "$YN" != "N" -a "$YN" != "y" -a "$YN" != "Y" ]; 

그러나 일부 셸에서는 변수 $YN이 비어 있습니다. $YN이 경우에도 손상되지

while [ "x$YN" != "xn" -a "x$YN" != "xN" -a "x$YN" != "xy" -a "x$YN" != "xY" ]; 

: 그래서 비교 작업을 할 수있는 안전한 방법 (그들은 서로를 취소 할 수 있도록) 같은 비교의 양쪽에 큰 따옴표 안에 더미 문자를 추가하는 것입니다 빈.

+0

그게 .. 대답을 많이 주셔서 고마워요. "x"가이 사건에서 무엇을하고 있는지 궁금 해서요. 전에 .. 힘든 시간을 가졌어요. – mishra1010

관련 문제