übergeben Ich versuche, alle Argumente nach --
bis zu einer Funktion zu übergeben.Durch eine Subsequenz von Bash-Argumente zu einer Funktion
Hier ist ein Beispielaufruf des Skripts.
$ ./myscript.sh exec -- run "Hello World"
Arg 1 run
Arg 2 Hello World
Wie kann ich die myscript.sh
(unten) für die gewünschte Ausgabe ändern?
#! /bin/bash
f() {
echo Arg 1 "$1"
echo Arg 2 "$2"
}
ARGS=
CHILD_ARGS=
# Look to see if we want to pass args through to a script
for ((ARGS_POS=1 ; ARGS_POS <= $# ; ARGS_POS++)); do
if [[ "--" == ${!ARGS_POS} ]]; then
((ARGS_POS++))
CHILD_ARGS=${@:$ARGS_POS}
ARGS=${@:1:$((ARGS_POS-2))}
break
fi
done
# Do something $ARGS
# Run the child
f $CHILD_ARGS
Beherzt dies die zwei Leerzeichen zwischen "Hello" und "World"? –
Nein, wenn Sie Leerzeichen möchten, sollten Sie einer Variablen $ 2- und $ 3-Werte zuweisen und sie dann drucken. wie var = "$ 2 $ 3"; echo "$ var" – Krishna
andlrcs Antwort hat den Vorteil, dass ich das nicht tun muss und es die Leerzeichen erhalten wird. Ich wollte dir nur die gleiche Chance geben, die er hatte. Vielen Dank für Ihre Hilfe! –