BASH_REMATCH 没有捕获
BASH_REMATCH doesn't capture
我正在尝试捕获 bash 中路径的一部分:
输入:/Users/foo/.virtualenvs/venv-test-server
代码:
#!/bin/zsh
regex="^.*\/venv-(.*)$"
if [[ $VIRTUAL_ENV =~ $regex ]] ; then
echo "Matched!"
echo ${BASH_REMATCH[1]}
fi
输出:Matched!
但是没有打印匹配项。为什么?
脚本指定 zsh
而不是 bash
:
#!/bin/bash
^^^^
如果你想使用zsh
,你需要在使用=~
之前设置BASH_REMATCH
选项:
setopt KSH_ARRAYS BASH_REMATCH
zsh
中的等效数组是 match
:
% [[ foo_bar =~ (.*)_(.*) ]]
% print $match[1]
foo
% print $match[2]
bar
我正在尝试捕获 bash 中路径的一部分:
输入:/Users/foo/.virtualenvs/venv-test-server
代码:
#!/bin/zsh
regex="^.*\/venv-(.*)$"
if [[ $VIRTUAL_ENV =~ $regex ]] ; then
echo "Matched!"
echo ${BASH_REMATCH[1]}
fi
输出:Matched!
但是没有打印匹配项。为什么?
脚本指定 zsh
而不是 bash
:
#!/bin/bash
^^^^
如果你想使用zsh
,你需要在使用=~
之前设置BASH_REMATCH
选项:
setopt KSH_ARRAYS BASH_REMATCH
zsh
中的等效数组是 match
:
% [[ foo_bar =~ (.*)_(.*) ]]
% print $match[1]
foo
% print $match[2]
bar