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