Ich denke, dies wäre ein einfacheres Beispiel für das, was Sie erreichen wollen. Es besteht keine Notwendigkeit, externe Werkzeuge zu verwenden. Die in der Bash integrierten Werkzeuge können diese Aufgabe für Sie erledigen.
function DOSOMETHING {
while test $# -gt 0; do
case "$1" in
-first)
shift
first_argument=$1
shift
;;
-last)
shift
last_argument=$1
shift
;;
*)
echo "$1 is not a recognized flag!"
return 1;
;;
esac
done
echo "First argument : $first_argument";
echo "Last argument : $last_argument";
}
Dadurch können Sie Flags verwenden, so dass Sie unabhängig von der Reihenfolge der Parameterübergabe das richtige Verhalten erhalten.
Beispiel:
DOSOMETHING -last "Adios" -first "Hola"
Ausgang :
First argument : Hola
Last argument : Adios
Sie können diese Funktion zu Ihrem Profil hinzufügen oder in ein Skript einbauen.
Danke!
Bearbeiten: Speichern Sie dies als Datei und führen Sie es dann als yourfile.sh -last "Adios" -first "Hola"
#!/bin/bash
while test $# -gt 0; do
case "$1" in
-first)
shift
first_argument=$1
shift
;;
-last)
shift
last_argument=$1
shift
;;
*)
echo "$1 is not a recognized flag!"
return 1;
;;
esac
done
echo "First argument : $first_argument";
echo "Last argument : $last_argument";