2015-07-18 4 views
3

Я в принципе хочу сделать следующее в Bash 3.1 под Windows (Git Bash):Bash: = ~ и сопоставления с образцом в Git Bash 3.1

#!/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.

Примечание: сценарий работает с Bash 4.3.33 в Gentoo.

версия 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, что я мог бы найти, версия:

Это издание 3.1-бета1, последний обновлено 5 сентября 2005 г., GNU Справочное руководство Bash для Bash, версия 3.1-beta1.

Эта документация Сформулируйте =~ доступна:

Дополнительный бинарный оператор '= ~', есть в наличии, с тем же старшинства как '==' и '! ='.

Я пропустил что-то вроде какой-то опции, используя shopt?

+0

только примечание стороны, не включайте ваш шаблон внутри кавычек. –

+0

@anubhava, ... должен теоретически, но сборка msys bash, отправленная этим винтажем Git для Windows, не содержит других функций, доступных в восходящем направлении, - попробуйте использовать замену процессов, f'rinstance. –

+0

Файл - это такой файл, как {{[Vol 02] - 0001 - Том 2, глава 1}}. Тем не менее, мой вопрос больше связан с реализацией оператора ~ ~ в Git Bash под Windows, код - это просто пример, где он не так явно (например, «я не признаю = ~ чувак!»). – NoDataFound

ответ

3

Вы можете просто использовать более новую версию этого bash: используйте git-for-windows, который вскоре заменит устаревший msysgit.

Не требуется установка: распаковать PortableGit-2.4.6-5th-release-candidate-64-bit.7z.exe в любом месте и позвонить по телефону c:\path\to\PortableGit-2.4.6-5th-release-candidate-64-bit\git-bash.exe.

You will get a 2013 4.3.39 bash (вместо старого 2005 3.1.20 Баша из msysgit): это один из самого latest 4.3 patches, май 2015.

Это более чем достаточно, чтобы сделать =~ работы.

+0

Есть ли список поддерживаемых версий Windows? Я застрял с XP на работе, и, хотя сценарий (и мой вопрос) для чего-то дома, мне действительно интересно перейти на git-for-windows. – NoDataFound

+0

@NoDataFound Xp работает отлично. Просто распакуйте 32-битную версию. https://github.com/git-for-windows/git/releases/download/v2.4.6.windows.1/PortableGit-2.4.6-5th-release-candidate-32-bit.7z.exe – VonC

Смежные вопросы