在expr regex命令中使用变量
我正在使用下面的bash(-我想) 以上操作将成功返回qux42 但是,如果我尝试以下方法,它将失败在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
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]" )