当前位置: 首页 > 科技观察

bash脚本中如何检查一个字符串是否包含另一个字符串

时间:2023-03-16 11:11:47 科技观察

我们在写bash脚本的时候,如果有一个字符串,我们想检查它是否包含另一个子字符串,这时候怎么办呢?在bash脚本中,检查子字符串的方法不止一种,今天我们介绍一些简单的例子,然后分享一个常用的bash脚本。使用if-else语句检查bash中的子字符串如果您熟悉bash中的条件语句,您可以使用它来检查字符串是否包含子字符串,方法如下:if[[$fullstring==*"$substr"*]];一个简单的例子上面的脚本中使用了双括号,这是必需的,它是一种原生方式,因为它没有使用任何其他工具。我们举个例子来解释一下上面的脚本。使用长字符串初始化变量:$fullstring="Thisisastringwithastretch"然后,将字符串“stretch”存储在变量substr中:$substr="stretch"然后执行字符串比较:$if[[$fullstring==*"$substr"*]];那么这里的星号*表示零个或多个字符。您应该熟悉bash脚本中引号的概念,引号中的$substr将其替换为实际值。基本上,上面的脚本检查完整的字符串是否匹配xxxxxxsubstrxxxxxx类型的字符串。或者,可以直接使用子字符串而不是通过变量:$if[[$fullstring=="stretch"]];然后我们用else语句完成这个脚本,它将显示另一条消息:#!/bin/bashfullstring="Thisisastringwithastretch"substr="stretch"if[[$fullstring==*"$substr"*]];然后回显“找到$substr!”否则回显“$substr未找到!”如果你运行上面的脚本,你会发现子串:$bashsubstr.shFoundstretch!另一个示例子字符串在与用户交互的脚本中非常有用。使用read命令使bash脚本接受用户输入。回声“嘿那里..你叫什么名字?”readNameecho“你好“$name”!MatrixResurrections预告片在这里!你的药片是红色还是蓝色?”阅读Pillif[[$Pill=="Red"||"!echo"Welcome..totherealworld"$Name"!"elseecho"WakeUp"$Name"!"figrantitexecutablepermissionandexecutethescript:$chmod+xmakeyourchoice.sh$输出./makeyourchoice.sh的内容如下:嘿那里..你叫什么名字?avimanyu你好avimanyu!MatrixResurrections预告片就在这里!你的药丸是红色的还是蓝色的?我有红色药丸欢迎来到现实世界avimanyu!在上面的脚本中,我们使用if语句来考虑两种可能性(区分大小写)。红色是一种可能的输入,但红色(小写)也是一种可能性,因此我们添加另一个条件,||意思是“或”,如果输入是Red,就是一个子串。尽管红色(小写)不是用户输入,但我们需要将其包含在脚本中。使用grep命令在bash中查找子字符串这是在bash中的字符串中查找子字符串的另一种方法。使用grep命令如下:ifgrep-q"$substr"<<<"$fullstring";然后回显“找到”;fi选项-q意味着grep将处于安静模式并且不会显示任何输出。另请注意,有3<,而不是2。