Wie kann ich einem Positionsparameter in Bash einen Wert zuweisen? Ich möchte einem Standardparameter einen Wert zuweisen:Zuordnung zu einem Positionsparameter
Zeigt an, dass 4 kein Befehl ist.
Wie kann ich einem Positionsparameter in Bash einen Wert zuweisen? Ich möchte einem Standardparameter einen Wert zuweisen:Zuordnung zu einem Positionsparameter
Zeigt an, dass 4 kein Befehl ist.
Die set
eingebaut ist die einzige Möglichkeit, Positionsparameter
$ set -- this is a test
$ echo $1
this
$ echo $4
test
wo die --
schützt gegen Dinge zu setzen, wie Optionen aussehen (z -x
).
In Ihrem Fall sollten Sie: für -z
if [ -z "$4" ]; then
set -- "$1" "$2" "$3" "$3"
fi
aber es wäre wahrscheinlich $#
statt Tests zählen zu den Parameter als
if [ -z "$4" ]; then
# default the fourth option if it is null
fourth="$3"
set -- "$1" "$2" "$3" "$fourth"
fi
Sie auch aussehen könnte wollen mehr klar sein.
Sie können tun, was Sie wollen von Ihrem Skript erneut mit einem vierten Parameter Aufruf:
if [ -z "$4" ]; then
$0 "$1" "$2" "$3" "$3"
exit $?
fi
echo $4
obige Skript aufrufen wie ./script.sh one two three
ausgeben wird:
drei
'./ $ 0' funktioniert nicht, wenn das Skript über PATH aufgerufen wird, '$ 0' sollte in Ordnung sein, was für'./Script' und '/ usr/local/bin/script' usw. funktionieren würde. – msw