2014-01-29 6 views
0

В сценариях оболочки у меня есть петля с условием if внутри цикла for.Как сохранить значения вывода цикла в массиве в сценариях оболочки?

for ((init; condition; increment)) 
do 
    if ((condition)) then 
     printf ... 
    fi 
done 

printf заявление печатает значения на выходе. Однако я хочу сохранить эти значения в массиве для использования внутри другого цикла. Как мне это сделать?

+0

Joker, пожалуйста, будьте внимательны к языку, который используется перед редактированием синтаксиса. Ваши изменения были совершенно верны для C#, но не для сценариев оболочки Unix. –

ответ

0

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

код скелет:

# initializing an array 
arr=() 
for ((i=0; i<=5; i++)) do if ((...)) then arr+=($i); printf .... fi done 
  • arr=() создает новый массив
  • arr+=($i) присоединяет/добавляет элемент в массив arr
0

Вот решение:

#!/bin/bash 

data=() #declare an array outside the scope of loop 
idx=0 #initialize a counter to zero 
for i in {53..99} #some random number range 
do 
    data[idx]=`printf "number=%s\n" $i` #store data in array 
    idx=$((idx+1)) #increment the counter 
done 
echo ${data[*]} #your result 

Что делает код

  • создает и пустой массив
  • создает индекс-счетчик для массива
  • хранит результат команды вывода PRINTF в массиве на соответствующий индекс (обратная кавычка говорит переводчику, чтобы сделать это)
Смежные вопросы