我想在 bash 中使用 switch/case 语句来检查作为字符串的文件名是否包含某些内容但又不包含某些内容。
这是我的案例:
case "$fileName" in
*Failed|!cp*)
echo "match"
;;
esac
但这目前不起作用,我如何查看字符串是否匹配“Failed”但不包含“cp”?
如果这也可以在开关/shell 中完成,那就太好了
最佳答案
!
后面必须跟一个带括号的模式列表,而不是模式本身。
|
在一个案例中代表 OR,而不是 AND。要获得 AND,您应该嵌套案例。
case "$fileName" in
*Failed)
case "$fileName" in
cp*) ;;
*) echo "match" ;;
esac
;;
esac
或者您可以只使用 if
而不是 case
:
if [[ $filename = *Failed && $filename != cp* ]]
then echo match
fi
关于linux - 如何检查字符串是否包含子字符串并且 Bash 中不包含子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52113721/