如何使用if语句检查Bash中两个括号内的内容?

时间:2019-03-17 00:40:49

标签: bash

我想检查一下括号内的内容。例如说我有这个

12($s0)

加载到数组中。

现在,我想跳过起始位12(和最后一位),只检查其长度为$s0

我不想删除开头和结尾的内容,只想查看它们之间的内容。

我将如何使用bash进行操作?

1 个答案:

答案 0 :(得分:0)

您可以编写一个正则表达式来捕获括号之间的内容,然后检查该捕获组的长度:

$ str='12($s0)'
$ re='\(([^)]*)\)'
$ [[ $str =~ $re ]]
$ echo "${#BASH_REMATCH[1]}"
3

正则表达式在开头和结尾使用文字原义(\(...\));它们之间的所有内容都在一个捕获组((...))中。捕获的模式是“零个或多个不是右括号的字符”:[^)]*

将正则表达式与=~运算符匹配时,捕获组存储在BASH_REMATCH数组中。索引0包含完全匹配项,索引1及以上包含捕获组。我们对第一个感兴趣,并在扩展中使用#来获取字符串的长度。