我试图在bash中捕获路径的一部分:
输入: /Users/foo/.virtualenvs/venv-test-server
码:
#!/bin/zsh
regex="^.*\/venv-(.*)$"
if [[ $VIRTUAL_ENV =~ $regex ]] ; then
echo "Matched!"
echo ${BASH_REMATCH[1]}
fi
Run Code Online (Sandbox Code Playgroud)
输出: Matched!
但是比赛没有打印出来.为什么?
该脚本指定zsh而不是bash:
#!/bin/bash
^^^^
Run Code Online (Sandbox Code Playgroud)
如果要使用zsh,则需要BASH_REMATCH在使用前设置选项=~:
setopt KSH_ARRAYS BASH_REMATCH
Run Code Online (Sandbox Code Playgroud)
中的等效数组zsh是match:
% [[ foo_bar =~ (.*)_(.*) ]]
% print $match[1]
foo
% print $match[2]
bar
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1292 次 |
| 最近记录: |