Regex-Abgleich im Shell-Skript

645
monster

Hier ist ein Ausschnitt aus meinem Shell-Skript -

regex="<version>([0-9]*)\.([0-9]*)\.([0-9]*)([^<]*)<\/version>.*"  #some unrelated lines of code  echo $(grep -m 1 "<version>" $1) if [[ $(grep -m 1 "<version>" $1) =~ $regex ]] then main_version = "$" feature_version = "$" patch_version = "$" tag = "$" else echo "$1: Version not Found" >&2 fi 

Aber es zeigt mir die folgende Ausgabe -

<version>1.1.7-release</version> <!-- ABC version --> abc/xyz/pom.xml: Version not Found 

Aber nach meinem Verständnis regexsollte es mit der Ausgabe von übereinstimmen grep(ich habe es zur besseren Übersicht an das Terminal gesendet). Kann also jemand sagen, was ich falsch mache?

0
Ich habe dies in einer Datei ausprobiert, die Ihre Sachen enthält, und es stimmt überein ... Was ist Ihre Bash-Version? (bash --version) tonioc vor 5 Jahren 0
Und was genau ist die Ausgabe von "grep"? `echo $ (grep ...)` beeinflusst die Ausgabe auf verschiedene Weise (tatsächlich ist 'echo $ (somecommand) `fast immer eine schlechte Idee). Versuchen Sie `grep ... | LC_ALL = C cat -vet` - Der Befehl `cat` konvertiert eine Vielzahl normalerweise unsichtbarer Zeichen in sichtbare Formen und fügt am Ende jeder Zeile ein" $ "hinzu, damit Sie sehen können, wo sie sich befinden. Gordon Davisson vor 5 Jahren 0
Ich habe den Fehler gefunden, der durch `export -f custom_function` verursacht wurde, um die custom_function in` xargs` zu verwenden, und natürlich war das aboce-Snippet Teil von custom_funcion. Danke, dass Sie Ihre Zeit haben monster vor 5 Jahren 0

0 Antworten auf die Frage