Баш для цикла на двух массивах - PullRequest
0 голосов
/ 29 октября 2018

У меня есть два массива, которые нужно перебрать, но я не могу понять, как получить комбинацию обоих массивов ...

declare -a things=(
"apple"
"cider"
"OJ"
)
declare -a numbers=(
"1"
"2"
"3"
"4"
"5
"6"
)


for i in "${things[@]}"; do
  echo $i $numbers
done

Expecting:
apple 1
apple 2
apple 3
apple 4
apple 5
apple 6
cider 1
cider 2
cider 3
... etc

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

Чтобы получить этот вывод, вам нужно зациклить только первый массив и использовать printf:

declare -a things=("apple" "cider" "OJ")
declare -a numbers=("1" "2" "3" "4" "5" "6")

# loop thru 1st array and use printf to print all values from 2nd
for i in "${things[@]}"; do printf "$i %s\n" "${numbers[@]}"; done

apple 1
apple 2
apple 3
apple 4
apple 5
apple 6
cider 1
cider 2
cider 3
cider 4
cider 5
cider 6
OJ 1
OJ 2
OJ 3
OJ 4
OJ 5
OJ 6
0 голосов
/ 29 октября 2018
declare -a things=(
"apple"
"cider"
"OJ"
)
declare -a numbers=(
"1"
"2"
"3"
"4"
"5"
"6"
)


for i in "${things[@]}"; do
  for number in "${numbers[@]}"; do
    echo "$i" "$number"
  done
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...