我想在bash中使用switch / case语句检查文件名(字符串)是否包含某些内容,但也没有。
这是我的情况:
case "$fileName" in
*Failed|!cp*)
echo "match"
;;
esac
但这当前不起作用,如何查看字符串是否匹配“失败”但不包含“ cp”?
如果也可以在开关/盒中完成,那就太好了
答案 0 :(得分:2)
!
后必须加上括号的模式列表,而不是模式本身。
|
表示“或”而不是“与”。要获得AND,您应该嵌套案例。
case "$fileName" in
*Failed)
case "$fileName" in
cp*) ;;
*) echo "match" ;;
esac
;;
esac
或者您可以只使用if
而不是case
:
if [[ $filename = *Failed && $filename != cp* ]]
then echo match
fi
答案 1 :(得分:0)
或者,您也可以使用if
和管道:
if echo 'Failed' | grep -v cp | grep -q Failed ; then
echo Failed without cp
else
echo It's either Winned or cp.
fi