【发布时间】:2019-01-10 13:39:40
【问题描述】:
我正在尝试使用自定义 IFS 从 bash 中的 4 个不同数组构建一个数组,请您帮帮我。
#!/bin/bash
arr1=(1 2 3 4)
arr2=(1 2 3 4)
arr3=(1 2 3 4)
arr4=(1 2 3 4)
arr5=()
oldIFS=$IFS
IFS=\;
for i in ${!arr1[@]}; do
arr5+=($(echo ${arr1[i]} ${arr2[i]} ${arr3[i]} ${arr4[i]}))
done
IFS=$oldIFS
echo ${arr5[@]}
我的输出是什么:
1 1 1 1;2 2 2 2;3 3 3 3;4 4 4 4 4 4
但它不起作用输出是正常的''。
1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 4 4
有什么想法吗?
我在不同的地方尝试过 IFS: 1)在for循环中 2) 在 arr5() 之前
我在 for 循环中测试了它,并且在 IFS 确实更改为“;”之后但在创建数组时不生效。
【问题讨论】:
-
您的最终目标是什么?无需接触
IFS即可轻松构建该字符串。 -
是的,我知道这很容易,只需添加一个“;”在 ${arr4[i]} 之后。但是我在那里有很多空格,我必须对字符串进行多次操作,然后将其拆分回我需要的部分
-
这 4 个数组也是可变的,所以如果我得到额外的空间或其他字符,那么之后的所有操作都需要修改.. 基本上我需要相信数组分隔符不会改变。