我有一个嵌套的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
我如何获得它?
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
输出:
一 1b 2c 3d 4
${#letters[@]}
是数组字母中的元素数。
您也可以使用常规变量和字符串索引执行相同的操作:
#!/bin/bash
letters="abcdefghi"
nums="123456789"
for ((i = 0; i < ${#nums}; i++)); do
printf "%s %sn" ${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