Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在expr regex命令中使用变量_Regex_Bash - Fatal编程技术网

在expr regex命令中使用变量

在expr regex命令中使用变量,regex,bash,Regex,Bash,我正在使用下面的bash(-我想) 以上操作将成功返回qux42 但是,如果我尝试以下方法,它将失败 baz=qux.. bar=test_qux42_test foo=(`expr ${bar} : '.*\(${baz}\)'`) 我使用一个变量修改命令来定制regex模式,但失败了。我做错了什么?如何在命令中使用变量?变量未在单引号内展开,请尝试将其更改为双引号: foo=(`expr ${bar} : ".*\(${baz}\)"`) 也可以将变量移到引号之外: foo=(`expr

我正在使用下面的bash(-我想)

以上操作将成功返回qux42

但是,如果我尝试以下方法,它将失败

baz=qux..
bar=test_qux42_test
foo=(`expr ${bar} : '.*\(${baz}\)'`)

我使用一个变量修改命令来定制regex模式,但失败了。我做错了什么?如何在命令中使用变量?

变量未在单引号内展开,请尝试将其更改为双引号:

foo=(`expr ${bar} : ".*\(${baz}\)"`)
也可以将变量移到引号之外:

foo=(`expr ${bar} : '.*\('${baz}'\)'`)

变量未在单引号内展开,请尝试将其更改为双引号:

foo=(`expr ${bar} : ".*\(${baz}\)"`)
也可以将变量移到引号之外:

foo=(`expr ${bar} : '.*\('${baz}'\)'`)

对于
bash
中的正则表达式匹配,不需要使用
expr
,它可以在本机执行:

baz=qux..
bar=test_qux42_test
[[ $bar =~ .*\($baz\) ]]
foo=( "${BASH_REMATCH[1]" )

对于
bash
中的正则表达式匹配,不需要使用
expr
,它可以在本机执行:

baz=qux..
bar=test_qux42_test
[[ $bar =~ .*\($baz\) ]]
foo=( "${BASH_REMATCH[1]" )