나는 이미 다음과 같은 줄을 생성하는 쉘 명령을 가지고 있습니다(from long ss -an....|...|...):
5 10.1.1.20 3307 (Nb IP port)
답변을 시뮬레이션하는 echo 명령이 있습니다.
echo -e "5 10.1.1.20 3307\n25 10.1.1.30 3307\n5 10.1.1.20 3308"
배열이 있습니다.
declare -A dbArray
dbArray[3306]="mysql"
dbArray[3307]="mysql_test_db"
dbArray[3308]="mysql_other_db"
나는 다음 명령을 원합니다 :
echo -e "5 10.1.1.20 3307\n25 10.1.1.30 3307\n5 10.1.1.20 3308" | do_something
반품
5 10.1.1.20 3307 mysql_test_db
25 10.1.1.30 3307 mysql_test_db
5 10.1.1.20 3308 mysql_other_db
입력 데이터(예: 3307)에서 포트 번호를 가져오고 배열(이 경우 mysql_test_db)의 내용을 가져옵니다.
포트 번호를 뭔가로 바꾸는 방법과 배열을 관리하는 방법을 알고 있지만... 배열(모두 파이프라인에서)에서 "조회"하기 위해 포트 번호를 추출하는 방법에 대한 질문에는 대답할 수 없습니다. .
재미있는 도전이라고 생각했는데 나에겐 너무 어려웠다.
누구든지 도움을 줄 수 있다면...
저는 bash 4.2.46을 사용하는 Redhat 7을 사용하고 있습니다.
기독교
답변1
do_something
아마도 bash 스크립트 일 것입니다.
#!/usr/bin/env bash
declare -A dbArray
dbArray[3306]="mysql"
dbArray[3307]="mysql_test_db"
dbArray[3308]="mysql_other_db"
while read -a args ; do
echo ${args[0]} ${args[1]} ${args[2]} ${dbArray[${args[2]}]}
done