![不匹配正则表达式](https://linux22.com/image/20631/%E4%B8%8D%E5%8C%B9%E9%85%8D%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F.png)
我有一个安装自定义 JBoss 的 Bash 脚本。根据正则表达式检查 JBoss 实例的名称以确保该名称有效:
if [[ ! $1 =~ $instanceNameRegex ]]; then
exit 1
fi
我们现在需要第二个有效的正则表达式。即名称必须匹配$instanceNameRegex
或$secondInstanceNameRegex
。
我如何在if
测试中实现这一目标?我正在寻找这个,但我无法让它工作:
if [[ [ ! $1 =~ $instanceNameRegex ] -a [ ! $1 =~ $secondInstanceNameRegex ] ]]; then
即,如果参数与第一个正则表达式不匹配并且与第二个正则表达式也不匹配,则退出。
答案1
你可以做
if [[ ! $1 =~ $instanceNameRegex && ! $1 =~ $secondInstanceNameRegex ]]; then
我会用:
if [[ ! ( $1 =~ $instanceNameRegex || $1 =~ $secondInstanceNameRegex ) ]]; then
答案2
这可能对你有用:
if [[ ! $1 =~ "${instanceNameRegex}|${secondInstanceNameRegex}" ]]; then