aus man bash
unter Parameter Expansion
:
${parameter#word}
${parameter##word}
Remove passenden Präfix-Muster. Das Wort wird erweitert, um ein Muster genau wie bei der Pfadnamenerweiterung zu erzeugen. Wenn das Muster den Beginn des Wertes des Parameters übereinstimmt, dann ist das Ergebnis der Expansion ist der aufgeweitete Wert von Parametern mit dem kürzesten Übereinstimmungsmuster (der #
Fall) oder den längsten Anpassungsmustern (der ##
Fall) gelöscht . Wenn der Parameter@
oder *
ist, wird die Musterentfernungsoperation auf jeder Positionsparameter der Reihe nach angewendet, und die Erweiterung ist die resultierende Liste. Wenn der Parameter eine Arrayvariable ist, die mit @
oder *
indiziert ist, wird das Muster removal operation nacheinander auf jedes Mitglied des Arrays angewendet, und die Erweiterung ist die resultierende Liste.
Die [email protected]
wird in die Liste der Skriptargumente erweitert jeweils in Anführungszeichen eingeschlossen:
"$1" "$2" "$3"...
damit die "${@#foo}"
auf eine Liste in der angegebenen Skript Argumente mit gezupft Präfix foo
wenn solche Präfix existieren erweitern würde ein erweiterten Strings, dh das Skript test
:
#!/bin/bash
echo "${@#foo}"
aufgerufen, wie:
./test abc foodef
Ausgänge
abc def
Dank, dass es erklärt. – devd