我有一个脚本(
source)来解析svn信息,为Bash的$PS1创建一个合适的字符串.不幸的是,这不适用于我正在使用的运行Perl 5.8.8的系统 – 它输出所有行而不是仅输出匹配.什么是Perl 5.8.8相当于以下?
__svn_ps1() { local result=$( svn info 2>/dev/null | \ perl -pe 's;^URL: .*?/((trunk)|(branches|tags)/([^/]*)).*;\2\4 ;p') if [ -n "$result" ] then printf "${1:- (%s)}" $result fi }
Perl 5.10的输出只包含空格,括号,分支名称,标记名称或主干之一以及末尾括号. Perl 5.8.8的输出(没有最终的p)包含了这个加上svn信息输出的每个空格分隔部分的括号版本.
一个可能的解决方法是在svn和perl命令之间使用简单的grep’^ URL:’,但我希望避免这种情况,因为这将针对每个Bash提示执行.