У меня есть array1
, array2
и функция.
Я пытаюсь в цикле for j=0 to ARRAY_SIZE
получить данные из array2[j]
, передать их функции, а возвращаемый вывод сохранить их в array1[j]
.
Ниже приведена часть кода, над которой я работаю:
exec 3>&1
${ppart_block_fstype[$i]}=_ppart_block_fstype < <(
for i in $(eval echo {0..$ARRAY_END})
do
if [[ ppart_block_alloc[$i] -eq "ALLOC" ]]
then
printf "%s\n" "${ppart_block_num[$i]}" >&3
fi
done)
exec 3>&-
_ppart_block_fstype
— это функция, которую я определил ранее, и она вернет результат, который я сохраню в массиве ppart_block_fstype
. Проблема вышеприведенной функции заключается в том, что она использует некоторые «тяжелые инструменты», поэтому на самом деле невозможно вызывать ее в каждом цикле цикла.
ppart_block_fstype
для каждой записи вpart_block_num
? Одна из проблем заключается в том, что ваш цикл for может выдать менееARRAY_END
строк текста. Другое дело, что непонятно, что_ppart_block_fstype
производит на выходе; предположительно, он записывает несколько строк вывода, по одной на строку ввода, но вам придется назначать каждую строку элементуppart_block_fstype
отдельно. - person chepner   schedule 04.10.2013seq 0 $ARRAY_END
или дажеfor (i = 0; i < $ARRAY_END; ++i)
, чем$(eval echo {0..$ARRAY_END})
. - person Rubens   schedule 04.10.2013ksh
немного более снисходительно относится к области видимости переменных, но, как вы говорите, «как сделать$i
видимым из подоболочки ...», я действительно не думаю, что это возможно. Просто для ясности: вы хотите, чтобы значение $i внутри циклаfor
изprocess substition
использовалось как значение$i
в индексе массива? - person shellter   schedule 04.10.2013ARRAY_END
записей, это нормально, мойppart_block_fstype
предварительно инициализирован._ppart_block_fstype
принимает один аргумент в качестве входных данных и производит одну строку вывода черезprintf
, этот вывод должен быть сохранен вppart_block_fstype
- person mateusz.burger   schedule 05.10.2013