我有两个变量,分别为多行。
VAR1="1
2
3
4"
VAR2="ao
ad
af
ae"
我想得到
VAR3="1ao
2ad
3af
4ae"
我知道我可以这样做:
echo "$VAR1" > /tmp/order
echo "$VAR2" | paste /tmp/order -
但是有没有不使用临时文件的方法呢?
将变量 $VAR1 和 $VAR2 的值作为输入,使用空字符串作为分隔符,并将它们粘贴在一起。
$ 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
paste --d '' <(echo "$VAR1") <(echo "$VAR2")
。使用--delimiters
参数或将其放在命令的末尾会导致出现“没有这样的文件或目录”的错误。 - iamyojimbo--d
命令会提示paste: illegal option -- - usage: paste [-s] [-d delimiters] file ...
。使用-d
命令解决了这个问题。 - Henrique Mattos