首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Bash: Shell字符串与一个、另一个或两者都匹配

Bash: Shell字符串与一个、另一个或两者都匹配
EN

Stack Overflow用户
提问于 2019-03-20 23:02:29
回答 1查看 31关注 0票数 0

我有一台$STATUS

这很好:

代码语言:javascript
复制
if [ "$STATUS" != "Ok" ]; then blah..  

这也是可行的:

代码语言:javascript
复制
if [ "$STATUS" != "Ok" ] || [ "$STATUS" != "Non-Critical" ]; then blah..  

当我的两个字符串都在输出中时,我遇到的问题是匹配(或不匹配)。

$status可以显式等于以下3种情况之一:

  • Ok
  • Non-Critical
  • Both

$status两者都输出时,它显示在两行上,例如:

代码语言:javascript
复制
Non-Critical  
Ok

反之亦然:

代码语言:javascript
复制
Ok  
Non-Critical

如果匹配包含其他内容,我如何才能在上面两个场景中的一个上显式匹配,从而允许我对其执行操作。有什么想法吗?

下面是输出的内容以及我希望它的行为:注意,这些是显式匹配,而不仅仅是包含字符串。

代码语言:javascript
复制
Ok
代码语言:javascript
复制
Non-Critical
代码语言:javascript
复制
Ok  
Non-Critical
代码语言:javascript
复制
Non-Critical  
Ok

任何其他的都是不好的。bad的一个例子是:

代码语言:javascript
复制
Ok  
Failure
EN

回答 1

Stack Overflow用户

发布于 2019-03-20 23:17:30

如果我理解正确的话,以下内容是可以接受的:

OK

Non-Critical

OK\nNon-Critical (其中\n是换行符)

Non-Critical\nOK

其他的都是不能接受的。

在这种情况下,一种可能性是(与上面的类似,但有额外的情况):

代码语言:javascript
复制
if [[ $STATUS == "OK" || $STATUS == "Non-Critical" || $STATUS == $'OK\nNon-Critical' || $STATUS == $'Non-Critical\nOK' ]]; then
  echo "Everything good"
fi
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55263969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档