1. 사용 명령어 |
(1) ping
(2) echo
2. 키워드 & 사용처 |
(1) 키워드
브레이스 확장, bash
(2) 사용처
IP 주소 목록 등을 브레이스 확장으로 간단히 작성하고 싶을 때 사용합니다.
3. 실행 예제 |
$ ./bash-brace.sh
[OK] Ping -> 192.168.2.1
[OK] Ping -> 192.168.2.2
[OK] Ping -> 192.168.2.3
[OK] Ping -> 192.168.2.4
[OK] Ping -> 192.168.2.5
4. 스크립트 |
#!/bin/bash
# bash 브레이스 확장 {}으로 IP 주소 목록 작성
for ipaddr in 192.168.2.{1..5} ①
do
ping -c 1 "$ipaddr" > /dev/null 2>&1
if [ $? - eq 0 ]; then
echo "[OK] Ping -> $ipaddr"
else
echo "[NG] Ping -> $ipaddr"
fi
done
5. 해설 |
이 스크립트는 ping 명령어를 대상 IP 주소에 실행해서 그 결과를 OK/NG로 표시합니다. 대상 IP 주소 작성은 bash 브레이스 확장(Brace Expansion)을 이용합니다.
여기에서는 브레이스 확장 기능을 위해 스크립트를 간략화해서 ping 명령어를 1회만 실행해서 응답을 확입합니다.
bash 브레이스 확장은 {}로 싼 문자열을 확장하는 문법입니다. 다음 몇 가지 예를 살펴보는데 쉼표로 구분해서 문자열을 나열하는 표현과 점 두 개(..)로 범위를 지정하는 표현이 있습니다. 어느 쪽이라도 직감적으로 알 수 있을 것입니다.
$ echo index.{php,htm,html} <- 쉼표로 문자열 지정. 목록을 의미
index.php index.html index.html
$ echo 192.168.2.{1..5} <- 숫자를 점 두 개로 범위 지정. 1에서 5까지를 의미
192.168.2.1 192.168.2.2 192.168.2.3 192.168.2.4 192.168.2.5
$ echo host-{a..c}.example.com <- 문자열을 점 두 개로 범위 지정. a에서 c까지를 의미
host-a.example.com host-b.example.com host-c.example.com
브레이스 확장은 스페이스로 나뉜 문자열 목록을 얻게 되므로 이것을 for문의 in에 직접 지정할 수 있습니다. 잘 쓰면 무척 편리한 기능이므로 기억해두기 바랍니다.
①은 IP 주소 목록 작성에 브레이스 확장을 사용합니다. 여기서는 192.168.2.1에서 192.168.2.5까지 확인하므로 네 번재 옥텟에 브레이스 확장을 이용합니다. 실행 시 192.168.2.1 ~ 192.168.2.5로 변환되어서 이 IP 주소에 순서대로 ping 명령어를 실행합니다.
브레이스 확장은 여러 개 사용할 수 있으므로 예를 들어 다음처럼 192.168.0.0/16이라는 네트워크에 속한 모든 IP 주소 목록을 작성할 수 있습니다.
#!/bin/bash
for ipaddr in 192.168.{0..255{.{0..255}
do
echo "$ipaddr"
done
이런 브레이스 확장을 이용하면 다양한 목록을 간단히 작성할 수 있습니다.
IP 주소나 파일명 생성에 이용하기 바랍니다.
참고서적 : 유닉스 리눅스 셸 스크립트 예제 사전
'IT 이야기 > Linux 셸 스크립트' 카테고리의 다른 글
[Linux 셸 스크립트] bash - 127 변수 내부 문자열을 n 번째부터 m 번째까지 추출하기 (0) | 2021.07.06 |
---|---|
[Linux 셸 스크립트] bash - 126 사칙 연산을 간단하게 작성하기 (0) | 2021.07.06 |
[Linux 셸 스크립트] bash - 124 셸 변수를 정수값 같은 속성으로 선언하기 (0) | 2021.07.06 |
[Linux 셸 스크립트] 서버 관리 - 123 로그 출력을 감시해서 로그에 특정 문자열이 있으면 경고하기 (0) | 2021.07.06 |
[Linux 셸 스크립트] 서버 관리 - 122 MySQL 테이블을 CSV로 출력하기 (1) | 2021.06.18 |
댓글