我在ubuntu 12.04 bash中的shell脚本中尝试了这段代码
IFS=$'\t'
name=(one two three four five)
fam=($(seq -s" " 1 1 5))
for (i=0;i<5;i++)
do
printf "%s\t%s\n" ${fam[i]} ${name[i]}
done
我想要的输出就是那样
1 one
2 two
3 three
4 four
5 five
但真正的输出是
1 2 3 4 5 one
two
three
four
five
我的代码出了什么问题?以及如何使用一个循环在一行中打印多个数组变量?
答案 0 :(得分:2)
name=(one two three four five)
fam=(1 2 3 4 5)
for i in ${!name[*]}
do
printf '%s %s\n' ${fam[i]} ${name[i]}
done
或者你可以修复
for (i = 0; i < 5; i++)
for ((i = 0; i < 5; i++))
答案 1 :(得分:0)
当您将IFS设置为'\ t'时,它会导致数组初始值设定项断开选项卡上的输入,因此您将'1 2 3 4 5'分配给fam [0]。您需要更改seq分隔符以匹配。
fam=($(seq -s $'\t' 1 1 5))