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
しかし、私はいつも出力としてゼロを取得します。
答え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