2016-09-08 2 views
-2

Wir hatten die ‚Dateiname‘ und ‚Dateierweiterung‘ aus einem StringWas bedeuten ## und% in der Shell?

[[email protected] Desktop]$ export FILE="filename.txt" 

Die folgende Syntax funktioniert gut zu bekommen. Wir würden jedoch gerne verstehen, wie '## .' und '%. "funktioniert

[[email protected] Desktop]$ echo ${FILE##*.} 
txt 
[[email protected] Desktop]$ echo ${FILE%.*} 
filename 

Jede Hilfe

+1

Warum nicht das Handbuch lesen? Für bash ist es [hier] (http://linux.die.net/man/1/bash). Siehe Abschnitt "Parametererweiterung". – kaylum

Antwort

0

Ihr Ausgangspunkt, um die bash manual wäre schön, vor allem der Abschnitt über Shell Parameter Expansion wäre zu lesen.

Einige relevante Auszüge:

${parameter#word}
${parameter##word}

Das Wort wird erweitert, um ein Muster zu erzeugen, wie in Dateinamen Erweiterung (siehe Dateiname Erweiterung). Wenn das Muster den Anfang des erweiterten Parameterwert übereinstimmt, dann ist das Ergebnis der Expansion ist das erweiterte Wert des Parameters mit der kürzesten Übereinstimmungsmuster (die ‘ # ’ Fall) oder die längsten Übereinstimmungsmuster (die ‘ # # ’ Fall) gelöscht. Wenn Parameter ‘ @ ’ oder ‘ ’, die Musterentfernungsvorgang ist, wird an jedem Positions Parameter wiederum angelegt und die Expansion ist die sich ergebende Liste. Wenn Parameter ist ein Array mit variabler subscripted ‘ @ ’ oder ‘ ’, die Musterentfernungsoperation wird jedem Mitglied der wiederum Array angelegt, und die Expansion ist die sich ergebende Liste.

${parameter%word}
${parameter%%word}

Das Wort wird erweitert, um ein Muster zu erzeugen, wie in Dateierweiterung. Wenn das Muster einen hinteren Abschnitt des expandierten Wert von Parameter übereinstimmt, dann ist das Ergebnis der Expansion ist der Wert von Parameter mit dem kürzesten Anpassungsmuster (die ‘% ’ Fall) oder der längsten Übereinstimmungsmuster (die ‘% % ’ Fall) gelöscht. Wenn Parameter ‘ @ ’ oder ‘ ’, die Musterentfernungsvorgang ist, wird an jedem Positions Parameter wiederum angelegt und die Expansion ist die sich ergebende Liste. Wenn Parameter ein Array Variable ist subscripted mit ‘ @ ’ oder ‘ ’, die Musterentfernungsvorgang an jedes Mitglied des Array wiederum angelegt wird, und die Expansion ist die sich ergebende Liste.

Verwandte Themen