我基本上想在Windows下的Bash 3.1(Git Bash)中执行以下操作:
#!/bin/bash
#set -x
shopt -s extglob
shopt -s nocasematch
declare file='[Vol 01] - 04 - This message'
declare filesafe="${file}"
declare pattern='\[Vol ([0-9]+)\] - ([0-9]+) -*'
if [[ "${file}" =~ $pattern ]]; then
echo "regexp: $(printf "%s %-2d %-3d" "${filesafe}" "${BASH_REMATCH[1]}" "${BASH_REMATCH[2]}" ) - - -"
else
echo "failed: $(printf "%s" "${filesafe}") - - - - -"
fi
=~
不起作用,因为它在这个版本的Bash中不存在。
注意:该脚本适用于 Gentoo 中的 Bash 4.3.33。
Git和Bash的版本如下:
$ git --version ; bash --version
git version 1.9.5.msysgit.1
GNU bash, version 3.1.23(6)-release (i686-pc-msys)
Copyright (C) 2005 Free Software Foundation, Inc.
我找到的关于Bash 3.1唯一的文档版本为:
这是GNU Bash参考手册的第3.1-beta1版,最后更新于2005年9月5日,适用于Bash Version3.1-beta1。
该文件说明了=~
可用:
另外还有一个二进制运算符'=~'可用,其优先级与'=='和'!='相同。
我错过了类似使用shopt的某些选项吗?
运算符,代码只是一个例子,其中它明显失败(比如“我不认识=,伙计!”)。 - NoDataFound