if [[ $DATA == *?xml* ]]
then
if [[ $DATA == *misuse* ]]
then echo "Misuse" >> $OUTPUTPAST2
else echo "All Good" >> $OUTPUTPAST2
fi
else echo "Not xml" >> $OUTPUTPAST2
fi
其中$DATA
不包含字符串?xml
我希望输出Not xml
,但我得到All Good
的输出。
我做错了什么?
答案 0 :(得分:1)
?
是glob中的特殊字符,表示匹配任何单个字符。
像这样使用:
if [[ "$DATA" == *'?xml'* ]]
then
if [[ "$DATA" == *misuse* ]]
then echo "Misuse" >> $OUTPUTPAST2
else echo "All Good" >> $OUTPUTPAST2
fi
else
echo "Not xml" >> $OUTPUTPAST2
fi
答案 1 :(得分:1)
虽然引用问号就足以解决您的问题,但这看起来像是真正想成为case
语句的代码。
case $DATA in
*'?xml'*misuse* | *misuse*'?xml'*)
echo Misuse ;;
*'?xml'*) echo All Good ;;
*) echo Not xml;;
esac >>$OUTPUTPAST2
还要注意重定向如何在整个块之后进行,以避免大量重复。
(如果"误用"只能在"?xml"标记之后,你可以简化。)