Вроде везде написано что невозможно, но может подскажете как обойти.
Вобщем мне нужен массив интерфейсов с их айпи.
netstat -rn | grep 172.16 |while read line
do
ip=`echo $line| awk '{print $1}'`
iface=`echo $line| awk '{print $6}'`
numb=`echo ${ip:8:2}${ip:11}`
ifaces[$numb]=$ip
echo $numb ${ifaces[$numb]}
doneФормируется и заполняется все просто сказка.
Но вот после DONE он стирается.
А мне его еще использовать же недо. Не только вывести.
А использовать потом надо в настройке фаервола.
Из мускула берем скорость для каждого айпи
и создаем правило для каждого интерфейса на основе его айпи..
Пробовал Експорт, пробовал декларе ДО вайла... НИче не помогло.
Подскажите люди добрые
Пора переходить на perl. Шелл конечно можно использовать для такой задачи, но попахивает мазохизмом.
>Пора переходить на perl. Шелл конечно можно использовать для такой задачи, но
>попахивает мазохизмом.согласен, переходите на perl. там форк и через пайп качать предку
а тут можно положить в файл а потом прочитать.
Трудно понять, чего вы хотите: получить массив после цикла или получить его в другом скрипте... Но если первое и если вы используете bash (а судя по коду, именно его вы и используете), то (об этом тут уже много раз спрашивали) вам нужно поменятьsome command | while read line; do
...
done
наwhile read line; do
...
done < <(some command)И, к слову:
- Для чего у вас переменная iface?
- Такой способ выделения частей адреса чреват, при переходе на другие адреса, получением странных трудновылавливаемых глюков. Лучше выделять подстроки не по фиксированным смещеням, а по полям, разделённым точками.