Допустим, вы не хотите использовать сторонние инструменты:
Сначала вы должны получить результат telnet раз в раз в переменной, скажем,
telnetStatusResult=$(ID0Status)
Затем,чтобы иметь одну строку для каждой пары (id, status), вы можете использовать tr и sed следующим образом:
telnetStatusResult=$(ID0Status |tr -d '\n' |sed -e 's/,/\n/g')
Edit => объяснения этой строки сценария:
- tr инструкция позволяет объединить все строки в одну
- инструкция sed позволяет разбить одну строку на несколько строк, каждый тип которых находится в коме','
- таким образом, вы получаете информацию о каждой паре (ID, статус) в одной независимой строке
В конце концов, вы можете извлечь статус для каждого идентификатора и выполнить соответствующийкоманда, например
telnetStatusInfoSet=$( echo "$telnetStatusResult" |sed -e 's/^.*id[ ":]*\([^"]*\)".*status[ ":]*\([^"]*\)".*$/\1;\2/' )
Edit => объяснения этой строки сценария:
- для каждой строки, инструкция sed просто извлекает значение idи значение status и форматирует его, чтобы получить информацию, разделенную точкой с запятой
Таким образом, у вас будет что-то вроде:
0;String1
1;String2
Тогда вы можете зациклить эти пары и выполнить соответствующее действие.
Дайте мне знать, если этого достаточночтобы решить вашу проблему.