이것은 "merlin" 데이터베이스의 report_data 테이블에서 데이터를 가져오기 위해 작성한 쉘 스크립트입니다.
data=$(mysql merlin -BNe 'select * from report_data')
echo "$data"
생성된 출력은 다음과 같습니다.
1 1634036113 701 NULL NULL monitor-localhost-616569842d586 Service latency 0 1 1 0 OK: service latency min/avg/max = 0.00/0.00/0.20 NULL
2 1634036123 701 NULL NULL monitor-localhost-616569842d586 Zombie process 0 1 1 0 OK: 0 zombie process(es) NULL
3 1634036131 701 NULL NULL monitor-localhost-616569842d586 Host orphans 0 1 1 0 OK: Orphaned host checks: NULL
다음은 테이블에 있는 열입니다.
| id | timestamp | event_type | flags | attrib | host_name | service_description | state | hard | retry | downtime_depth | output | long_output |
각 행을 별도의 엔터티로 사용하고 이를 구문 분석하고 싶습니다.
답변1
다음과 같이 시도해 볼 수 있습니다.
#!/bin/bash
mysql merlin -e "SELECT * FROM report_data" | while read id timestamp event_type flags attrib host_name; do
#echo "$id | $timestamp | $event_type | $flags | $attrib | $host_name"
array+=("$id | $timestamp | $event_type | $flags | $attrib | $host_name")
done
방금 인쇄했지만 한 줄씩 배열에 추가하는 등 원하는 대로 할 수 있습니다.