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