我正在尝试使用Bash替换来替换变量中的整个字符串(如果它与模式匹配)。例如:
pattern="ABCD"
${var/pattern/}
删除(替换为空)$pattern
$var
的第一次出现
${var#pattern}
在$pattern
$var
但是如何从"^ABCD$"
中删除正则表达式模式$var
?我可以:
if [ $var == "ABCD" ] ; then
echo "This is a match." # or whatever replacement
fi
但这正是我正在寻找的。 p>
答案 0 :(得分:5)
您可以进行正则表达式检查:
pattern="^ABCD$"
[[ "$var" =~ $pattern ]] && var=""
它使用$var
中定义的正则表达式检查$pattern
。如果匹配,则执行命令var=""
。
$ pattern="^ABCD$"
$ var="ABCD"
$ [[ "$var" =~ $pattern ]] && echo "yes"
yes
$ var="1ABCD"
$ [[ "$var" =~ $pattern ]] && echo "yes"
$
有关详细信息,请参阅check if string match a regex in BASH Shell script。