2013-08-26 44 views
8

我有兩個變量,多行。如何在bash中結合兩個可變的逐列

VAR1="1 
2 
3 
4" 

VAR2="ao 
ad 
af 
ae" 

我想

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

我知道我可以做到這一點:

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

但是有什麼辦法沒有一個臨時文件?

回答

17

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

+0

有什麼<()操作符叫什麼名字? –

+1

@KurtisNusbaum「<()」被稱爲「進程替換」。並非所有的炮彈都支持它,但是最流行的炮彈可以做到:https://www.google.com/search?q=process+substitution –

2

你可以說:

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

目前還不清楚是否要生成的數組或沒有空間。您的示例工作將包含空間,如上述情況。

如果你不想空間,即1ao代替1 ao,那麼你可以說:

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

有兩個相同的答案有什麼意義? –