оболочка korn: переход по индексируемому массиву, составленному из составных элементов данных - PullRequest
0 голосов
/ 26 марта 2020

У меня есть следующий скрипт:

#!/usr/bin/env ksh93

typeset -C g_info_struct

netstat -Aan | grep LISTEN |  awk '{print $1,$5}' |
while read pcb port; do
   out=$(rmsock $pcb tcpcb)
   port=${port##*.}
   pid=$(echo "${out}" | sed -n 's/.*pro[c]*ess \([0-9][0-9]*\) .*/\1/p')
   if [[ -n ${pid} ]]; then
      g_info_struct.proc=$(ps -o comm= -p ${pid})
      g_info_struct.pid=${pid}
      g_info_struct.port=${port}
      server_info_list=(${server_info_list[*]} ${g_info_struct})
   else
      continue
   fi
done
print "server_info_list content: ${server_info_list[*]}"
for index in ${!server_info_list[*]}; do
   echo "Index:     ${index}"
   echo "Process:   ${server_info_list[$index].proc}"
   echo "PID:       ${server_info_list[$index].pid}"
   echo "Port:      ${server_info_list[$index].port}"
   echo
done

Вывод скрипта:

server_info_list content: ( pid=17236032 port=13 proc=inetd ) ( pid=17236032 port=21 proc=inetd ) ( pid=19923094 port=22 proc=sshd ) ( pid=19923094 port=22 proc=sshd ) ( pid=17236032 port=23 proc=inetd )
Index:     0
Process:
PID:
Port:

Index:     1
Process:
PID:
Port:

Index:     2
Process:
PID:
Port:

Index:     3
Process:
PID:
Port:

Index:     4
Process:
PID:
Port:

Я пытаюсь следовать примеру { ссылка } из вопроса: Элегантное использование массивов в k sh ...

Я скопировал и изменил пример с использования ассоциативного массива на индексированный массив и успешно заставил мой скрипт напечатать информацию, которую я хочу, если я вручную назначил массив server_info_list:

server_info_list=( 
    ( pid=17236032 port=13 proc=inetd )
    ( pid=17236032 port=21 proc=inetd )
    ( pid=19923094 port=22 proc=sshd )
    ( pid=19923094 port=22 proc=sshd )
    ( pid=17236032 port=23 proc=inetd )
)

Но независимо от того, что я пытался, я не могу напечатать содержимое массива, если его данные назначаются автоматически массив.

Оболочка Korn: «Версия M 93t + 2009-05-01» в AIX 7.1.5.4 ...

Чего мне не хватает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...