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