>[оверквотинг удален]
>>position=$(($length-1))
>>port_number=${line:$position:1}
>>mac_number[8]=10
>>#echo ${mac_number[8]}
>>done
>>echo "${mac_number[8]}"
>>
>>Вывод внутри цикла - полет нормальный, как только выходим из цикла, весь
>>массив очищается.
>>Да и все остальные переменные тоже. ======
>
>Попробуйте так:
>while read line
>do
>length=${#line}
>position=$(($length-1))
>port_number=${line:$position:1}
=====
>mac_number[8]=10
>#echo ${mac_number[8]}
>done < <(snmpwalk -c public 192.168.1.1 1.3.6.1.2.1.17.4.3.1.2)
>echo "${mac_number[8]}"
>
>Как у вас, bash запускает цикл в дочернем процессе.
ну, и с тем же успехом
всё, что обрабатывается внутри процесса по окнчании процесса не сохраняется и не может сохранится (разве что, значения из последней строки цикла, но баш этого не делает)
создав переменную до начала процесса, обработай её внутри процесса, по окончании переменная принимает то значение которое было до начала процесса
ВЫВОД - если нужно сохранить массив после окончания процесса "while", создайте его до начала процесса
i=( snmpwalk -c public 192.168.1.1 1.3.6.1.2.1.17.4.3.1.2 )