bash - tricks - script header html




Verarbeitet alle Argumente außer dem ersten(in einem Bash-Skript) (2)

Ich habe ein einfaches Skript, bei dem das erste Argument für den Dateinamen reserviert ist und alle anderen optionalen Argumente an andere Teile des Skripts übergeben werden sollen.

Mit Google habe ich dieses Wiki gefunden , aber es lieferte ein wörtliches Beispiel:

echo "${@: -1}"

Ich kann nichts anderes zum Arbeiten bekommen, wie:

echo "${@:2}"

oder

echo "${@:2,1}"

Ich bekomme vom Terminal eine "schlechte Ersetzung".

Was ist das Problem und wie kann ich alle außer dem ersten Argument, das an ein Bash-Skript übergeben wird, verarbeiten?


Benutze das:

echo "${@:2}"

Die folgende Syntax:

echo "${*:2}"

würde auch funktionieren, wird aber nicht empfohlen, da @Gordon bereits erklärt hat, dass mit * alle Argumente zusammen als ein Argument mit Leerzeichen ausgeführt werden, während @ die Pausen zwischen ihnen @Gordon (selbst wenn einige der Argumente selbst sind) Leerzeichen enthalten). Es macht keinen Unterschied mit echo , aber es ist wichtig für viele andere Befehle.


Wenn Sie eine Lösung suchen, die auch in /bin/sh funktioniert, versuchen Sie es

first_arg="$1"
shift
echo First argument: "$first_arg"
echo Remaining arguments: "[email protected]"

shift [n] verschiebt die Positionsparameter n- mal. Eine shift setzt den Wert von $1 auf den Wert von $2 , den Wert von $2 auf den Wert von $3 und verringert den Wert von $# um eins.





shell