In bash kann man Argumente umgehen, die Leerzeichen enthalten.
%Vor%Dies funktioniert auch für Argumente zu einem Befehl oder einer Funktion:
%Vor% So weit, so gut, aber was ist, wenn ich die Argumente vor dem Aufruf von foo
manipulieren möchte?
Das funktioniert nicht:
%Vor%Wie erstellt man dann Argumentlisten, wenn die Argumente Whitespace enthalten?
Es gibt (mindestens) zwei Möglichkeiten, dies zu tun:
(1.) Verwenden Sie ein Array und erweitern Sie es mit "${array[@]}"
:
Was haben wir gelernt? "${array[@]}"
es bis ${array[*]}
was "$@"
es bis $*
.
(2.) Oder wenn Sie keine Arrays verwenden möchten, müssen Sie eval
:
Ich hatte auch ein Problem damit. Ich schrieb ein Bash-Skript, um die wichtigen Dateien auf meinem Windows-Computer (Cygwin) zu sichern. Ich versuchte auch den Array-Ansatz und hatte immer noch einige Probleme. Ich bin mir nicht sicher, wie genau ich es repariert habe, aber hier sind die Teile meines Codes, die wichtig sind, falls es dir helfen wird.
%Vor%Tags und Links arguments bash whitespace