Erstellen von Argumentlisten mit Leerzeichen

8

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?

    
tarsius 04.01.2009, 19:04
quelle

5 Antworten

13

Es gibt (mindestens) zwei Möglichkeiten, dies zu tun:

(1.) Verwenden Sie ein Array und erweitern Sie es mit "${array[@]}" :

%Vor%

Was haben wir gelernt? "${array[@]}" es bis ${array[*]} was "$@" es bis $* .

(2.) Oder wenn Sie keine Arrays verwenden möchten, müssen Sie eval :

verwenden %Vor%     
tarsius 05.01.2009, 00:38
quelle
3

Hier ist eine kürzere Version: (Beispiel für die Erstellung von Argumenten für einen Befehl find )

%Vor%     
Jaen 03.10.2013 19:44
quelle
2

Verwenden Sie Arrays (eines der versteckte Funktionen in Bash).

    
JesperE 04.01.2009 19:51
quelle
0

Sie können die Arrays genau so verwenden, wie Sie es vorgeschlagen haben, wobei ein kleines Detail geändert wurde. Die Zeile, die foo aufruft, sollte

lesen %Vor%     
jpalecek 06.01.2009 14:42
quelle
0

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%     
tj111 06.01.2009 14:52
quelle

Tags und Links