嵌套for循环 - 输出一次

时间:2015-04-28 19:37:56

标签: bash shell unix

我有一个嵌套的for循环,每个变量都打印一个字母。

for i in a b ; do for j in 1 2; do echo "$i $j"; done; done
a 1
a 2
b 1
b 2

我的要求是

a 1
b 2

我如何得到它?

2 个答案:

答案 0 :(得分:0)

letters=(a b c d)    # declare an array with four elements
numbers=(1 2 3 4)
for ((i=0;i<${#letters[@]};i++)); do echo ${letters[$i]} ${numbers[$i]}; done

输出:

a 1
b 2
c 3
d 4

${#letters[@]}是数组字母中元素的数量。

答案 1 :(得分:0)

您也可以使用常规变量和字符串索引

#!/bin/bash

letters="abcdefghi"
nums="123456789"

for ((i = 0; i < ${#nums}; i++)); do 
    printf "%s %s\n" ${letters:i:1} ${nums:i:1}
done

<强>输出

$ bash prnidx.sh
a 1
b 2
c 3
d 4
e 5
f 6
g 7
h 8
i 9