У меня есть код, как этотВызов программы внутри цикла
Alien=(misterX 3010 6400 9920 12750 3010 6400 9920 12750 9920)
Opponent=(misterY 3090 6450 10020 12820 10020 12820 3090 6450 9910)
for ((y=1 ; y<${#Alien[@]} ; y++)); do
echo "scale=2;(${Opponent[$y]}-${Alien[$y]})/1000" | bc | sed -e 's/^\./0./g' -e 's/^-\./-0./g'
done
С этим я могу Исли Asign выход на массив
for ((y=1 ; y<${#Alien[@]} ; y++)); do
Wynik+=($(echo "scale=2;(${Opponent[$y]}-${Alien[$y]})/1000" | bc | sed -e 's/^\./0./g' -e 's/^-\./-0./g'))
done
echo ${Wynik[@]}
Но это медленно, так после того, как прибегая к помощи у меня есть гораздо более быстрый вариант, как
(
echo "scale=2;"
for ((y=1 ; y<${#Alien[@]} ; y++)); do
echo "(${Opponent[$y]}-${Alien[$y]})/1000"
done
) | bc | sed -e 's/^\./0./g' -e 's/^-\./-0./g'
Частично я понимаю, как это работает, но не может найти способ перемещения вывода в массив. Единственный способ, который я нашел, -
(
echo "scale=2;"
for ((y=1 ; y<${#Alien[@]} ; y++)); do
echo "(${Opponent[$y]}-${Alien[$y]})/1000"
done
) | bc | sed -e 's/^\./0./g' -e 's/^-\./-0./g' > filename
Wynik+=($(cat filename))
echo ${Wynik[@]}
Еще быстрее, по крайней мере, для ssd, но это не так, я знаю это. Как я должен это делать?
Отлично, спасибо. –
@kicha__ Пожалуйста, примите ответ, если он вам поможет. Благодарю. – plesiv