2013-08-26 5 views
8

Ich habe zwei Variablen, Multi-Line.Wie zwei Variablen Spalte für Spalte in Bash kombinieren

VAR1="1 
2 
3 
4" 

VAR2="ao 
ad 
af 
ae" 

Ich möchte

VAR3="1ao 
2ad 
3af 
4ae" 

bekommen Ich weiß, dass ich es durch tun können:

echo "$VAR1" > /tmp/order 
echo "$VAR2" | paste /tmp/order - 

Aber ist es eine Möglichkeit, ohne eine temporäre Datei zu tun?

Antwort

17

paste <(echo "$VAR1") <(echo "$VAR2") --delimiters ''

+0

was ist der

+1

@KurtisNusbaum "<()" wird als "Prozesssubstitution" bezeichnet. Nicht alle Shells unterstützen es, aber die meisten beliebtesten tun: https://www.google.com/search?q=process+substitution –

2

können Sie sagen:

$ VAR3=$(paste <(echo "$VAR1") <(echo "$VAR2")) 
$ echo "$VAR3" 
1 ao 
2 ad 
3 af 
4 ae 

Es ist nicht klar, ob Sie Räume in dem resultierenden Array wollen oder nicht. Ihr Beispiel , das funktioniert würde Leerzeichen wie im obigen Fall enthalten.

Wenn Sie keine Leerzeichen wollen, das heißt 1ao statt 1 ao, dann kann man sagen:

$ VAR3=$(paste <(echo "$VAR1") <(echo "$VAR2") -d '') 
$ echo "$VAR3" 
1ao 
2ad 
3af 
4ae 
+0

Was ist ein Punkt von 2 identische Antworten? –

Verwandte Themen