2015-04-28 2 views
-1

У меня есть замкнутый цикл для печати по одной букве каждой из каждой переменной.Вложенный цикл цикла - выход один раз

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 

Как я могу получить?

+0

Тогда вы не хотите вложенные циклов. Вам нужен один цикл, который также увеличивает счетчик. –

+0

Какая переменная a есть? это массив или простая строка? – Jahid

ответ

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[@]} является количество элементов в массиве букв.

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 
Смежные вопросы