변수를 문자열 bash와 비교

변수를 문자열 bash와 비교
st.txt

"실패했습니다" "aa" "2018-04-03T17:43:38Z"

   while read status name date; do
    case "$status" in
    'aborted')
        echo -1
        ;;
    "failed")
        echo -1
        ;;
    'succeeded')
        echo 0
        ;;
    *)
        echo 0
    esac
    exit 0
done < st.txt

하지만 나는 항상 출력으로 0을 얻습니다.

답변1

"failed"다음과 같이 바꿔야 합니다 "\"failed\"".

while read status name date; do
    case "$status" in
        'aborted')
            echo -1
            ;;
        "\"failed\"")
            echo -1
            ;;
        'succeeded')
            echo 0
            ;;
        *) echo 0
    esac
    exit 0
done<st.txt

당신은 또한 사용을 고려할 수 있습니다read with -r.

원하는 것을 달성하는 더 쉬운 방법도 있습니다.

if [ "$(cut -d ' ' -f1 st.txt)" = "\"failed\"" ]
then
    printf -- "-1\n"
fi

답변2

또 다른 해결책은 큰따옴표로 묶인 문자열 주위에 작은따옴표를 추가하는 것입니다.

while read status name date; do
    case "$status" in
        '"aborted"')
             echo -1
             ;;
        '"failed"')
             echo -1
             ;;
        '"succeeded"')
             echo 0
             ;;
        *)
             echo 0
    esac
    exit 0
done < st.txt

관련 정보