Bash에서 확인에 응답하는 중 오류가 발생했습니다.

Bash에서 확인에 응답하는 중 오류가 발생했습니다.

간단한 확인 메시지를 만들고 있습니다. 코드는 다음과 같습니다.

read -r -p "Are You Sure? [Y/n] " input

case $input in
    [yY][eE][sS]|[yY])
        echo "Yes"
        ;;

    [nN][oO]|[nN])
        echo "No"
            ;;

    *)
    echo "Invalid input..."
    exit 1
    ;;
esac

하지만 유효한지 여부에 대한 질문에 대답하면 오류가 표시됩니다.

Quang-Anhs-iPhone-3GS:~ root# /var/mobile/Testarea/confirm.sh
Are You Sure? [Y/n] y
/var/mobile/Testarea/confirm.sh: line 1: read: `input
': not a valid identifier
/var/mobile/Testarea/confirm.sh: line 2: 
: command not found
/var/mobile/Testarea/confirm.sh: line 3: syntax error near unexpected token `in
'
/var/mobile/Testarea/confirm.sh: line 3: `case $input in
'

그럼 내가 뭘 잘못하고 있는 걸까요?

답변1

왜냐면 iOS에 무슨 문제가 있는지 모르겠지만 대안을 찾았거든요. 이 대안은 선택 메뉴처럼 작동합니다.

function yes {
    echo "Yes"
}

all_done=0
while (( !all_done )); do
    options=("Yes" "Exit")

    echo "Are you sure "
    COLUMNS=12
    select opt in "${options[@]}"; do
        case $REPLY in
            1) yes; break ;;
            2) all_done=1; break ;;
            *) echo "Invalid input..." ;;
        esac
    done
done

echo "Exiting"

답변2

이것은 생각보다 쉽습니다. 먼저 bash를 사용하고 있는지 확인한 후 다음을 시도해 보세요.

#!/bin/bash
read -r -p "Are You Sure? [Y/n] " input

input=$(echo "$input" | tr "[:lower:]" "[:upper:]")

case $input in
    Y*|S*|E*)
        echo "Yes"
        ;;

    N*|O*)
        echo "No"
            ;;

    *)
    echo "Invalid input..."
    exit 1
    ;;
esac

답변3

문제는 cydia의 모바일 단말기에 내장된 기능이 없어서 read이 스크립트를 시작할 수 없다는 것입니다.

관련 정보