首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何检查字符串是否包含Bash中的子字符串

如何检查字符串是否包含Bash中的子字符串
EN

Stack Overflow用户
提问于 2008-10-23 12:37:32
回答 16查看 2.6M关注 0票数 3.1K

我在Bash中有一个字符串:

代码语言:javascript
复制
string="My string"

如何测试它是否包含另一个字符串?

代码语言:javascript
复制
if [ $string ?? 'foo' ]; then
  echo "It's there!"
fi

其中??是我的未知操作符。我要使用echogrep

代码语言:javascript
复制
if echo "$string" | grep 'foo'; then
  echo "It's there!"
fi

这看起来有点笨拙。

EN

回答 16

Stack Overflow用户

回答已采纳

发布于 2008-10-23 12:55:25

如果使用双括号,也可以在case语句之外使用Marcus's answer (* wildcards)

代码语言:javascript
复制
string='My long string'
if [[ $string == *"My long"* ]]; then
  echo "It's there!"
fi

请注意,针形字符串中的空格需要放在双引号之间,*通配符应该放在外部。还要注意,使用的是简单的比较运算符(即==),而不是正则表达式运算符=~

票数 4.4K
EN

Stack Overflow用户

发布于 2008-10-23 20:10:53

如果您更喜欢正则表达式方法:

代码语言:javascript
复制
string='My string';

if [[ $string =~ "My" ]]; then
   echo "It's there!"
fi
票数 839
EN

Stack Overflow用户

发布于 2008-10-23 12:47:04

我不确定是否使用if语句,但您可以使用case语句获得类似的效果:

代码语言:javascript
复制
case "$string" in 
  *foo*)
    # Do stuff
    ;;
esac
票数 445
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/229551

复制
相关文章

相似问题

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