셸 스 크 립 트 프로 그래 밍 내 장 된 문자열 처리 도구

bash 내 장 된 문자열 처리 도구:
문자열 절편:
    ${var:offset:number}
    문자열 의 하위 문자열 가 져 오기;
문자열 의 맨 오른쪽 에 있 는 몇 글자: ${var: -length}
    메모: 콜론 후 공백 문자 가 있어 야 합 니 다.
패턴 기반 하위 문자열:
    ${var\# * word}: 그 중 word 는 지정 한 구분자 입 니 다.기능: 왼쪽 에서 오른쪽으로 var 변수 에 저 장 된 문자열 을 찾 습 니 다. 처음으로 나타 난 워드 구분자 입 니 다. 문자열 의 시작 부분 이 구분자 사이 의 모든 문 자 를 삭제 합 니 다.
    ${var\#\# * word}: 그 중 word 는 지정 한 구분자 입 니 다.기능: 왼쪽 에서 오른쪽으로 var 변수 에 저 장 된 문자열 을 찾 습 니 다. 마지막 으로 나타 난 워드 구분자 입 니 다. 이 구분자 사이 의 모든 문 자 를 삭제 합 니 다.
    mypath="/etc/init.d/functions"
    ${mypath##*/}:   functions
    ${mypath#*/}:  etc/init.d/functions
    ${var% word *}: 그 중 word 는 지정 한 구분자 입 니 다.기능: 오른쪽 에서 왼쪽으로 var 변수 에 저 장 된 문자열 을 찾 습 니 다. 처음으로 나타 난 워드 구분자 입 니 다. 이 구분자 에서 문자열 끝 사이 의 모든 문 자 를 삭제 합 니 다.
    ${var%% word *}: 워드 는 지정 한 구분자 입 니 다.기능: 오른쪽 에서 왼쪽으로 var 변수 에 저 장 된 문자열 을 찾 습 니 다. 마지막 으로 나타 난 워드 구분자 입 니 다. 이 구분자 에서 문자열 끝 사이 의 모든 문 자 를 삭제 합 니 다.
        mypath="/etc/init.d/functions"
    ${mypath%/*}:  /etc/init.d
        url=http://www.magedu.com:80
    ${url##*:}
    ${url%%:*}
대체 찾기:
    ${var/PatTERN/SUBSTI}: var 가 표시 하 는 문자열 중 처음으로 PATTERN 에 일치 하 는 문자열 을 찾 아 SUBSTI 가 표시 하 는 문자열 로 바 꿉 니 다.
    ${var//PatTERN/SUBSTI}: var 가 표시 하 는 문자열 중 PATTERN 에 일치 하 는 모든 문자열 을 찾 아 SUBSTI 가 표시 하 는 문자열 로 대체 합 니 다.
    ${var/\# PATTERN/SUBSTI}: var 가 표시 하 는 문자열 중 줄 의 첫머리 가 PATTERN 에 일치 하 는 문자열 을 찾 아 SUBSTI 가 표시 하 는 문자열 로 바 꿉 니 다.
    ${var/% PATTERN/SUBSTI}: var 가 표시 하 는 문자열 중 줄 끝 이 PATTERN 에 일치 하 는 문자열 을 찾 아 SUBSTI 가 표시 하 는 문자열 로 바 꿉 니 다.
메모: PATTERN 에 서 는 glob 스타일 과 마스크 를 사용 합 니 다.
찾기 삭제:
     ${var/PatTERN}: var 문자열 의 첫 번 째 일치 하 는 것 을 PATTERN 모드 로 찾 아 삭제 합 니 다.
     ${var//PATERN}
     ${var/#PATTERN}
     ${var/%PATTERN}
문자 대소 문자 변환:
     ${var ^}: var 의 모든 소문 자 를 대문자 로 변환 합 니 다.
     ${var,,}: var 의 모든 대문자 문 자 를 소문 자로 변환 합 니 다.
변수 할당:
     ${var: - ALUE}: var 변수 가 비어 있 거나 설정 되 어 있 지 않 으 면 VALUE 로 돌아 갑 니 다.그렇지 않 으 면 var 변수의 값 을 되 돌려 줍 니 다. 
     ${var: = VALUE}: var 변수 가 비어 있 거나 설정 되 어 있 지 않 으 면 VALUE 로 돌아 가 VALUE 를 var 변수 에 할당 합 니 다.그렇지 않 으 면 var 변수의 값 을 되 돌려 줍 니 다. 
     ${var: + VALUE}: var 변수 가 비어 있 지 않 으 면 VALUE 로 돌아 갑 니 다.
     ${var:? ERROR INFO}: var 가 비어 있 거나 설정 되 어 있 지 않 으 면 ERROR 로 돌아 갑 니 다.INFO 가 잘못된 알림 입 니 다.그렇지 않 으 면 var 값 을 되 돌려 줍 니 다. 
스 크 립 트 쓰기:
ping 명령 은 172.16.1.1 - 172.16.67.1 범위 내의 모든 호스트 가 온라인 인지 확인 합 니 다.온라인 디 스 플레이 는 up, 비 온라인 디 스 플레이 다운 으로 각각 온라인 호스트 와 비 온라인 호스트 수 를 집계 합 니 다.
각각 for, while 순환 을 사용 합 니 다.
#!/bin/bash
#
declare -i uphosts=0
declare -i downhosts=0
for i in {1..17}; do
    if ping -W 1 -c 1 172.16.$i.1 &> /dev/null; then
        echo "172.16.$i.1 is up."
        let uphosts+=1
    else
        echo "172.16.$i.1 is down."
        let downhosts+=1
    fi
done
echo "Up hosts: $uphosts, Down hosts: $downhosts."

function 과 while 방식 으로 구현:
#!/bin/bash
#
declare -i uphosts=0
declare -i downhosts=0
declare -i i=1
hostping() {
if ping -W 1 -c 1 $1 &> /dev/null; then
    echo "$1 is up."
    return 0
else
    echo "$1 is down."
    return 1
fi
}
while [ $i -le 67 ]; do
    hostping 172.16.$i.1
    [ $? -eq 0 ] && let uphosts++ || let downhosts++
    let i++
done
echo "Up hosts: $uphosts, Down hosts: $downhosts."

스 크 립 트 작성, 구현:
C 류, B 류 또는 A 류 네트워크 의 모든 호스트 가 온라인 인지 확인 할 수 있 습 니 다.
#!/bin/bash
#
cping() {
local i=1
while [ $i -le 5 ]; do
    if ping -W 1 -c 1 $1.$i &> /dev/null; then
        echo "$1.$i is up"
    else
        echo "$1.$i is down."
    fi
    let i++
done
}
bping() {
local j=0
while [ $j -le 5 ]; do
    cping $1.$j
    let j++
done
}
aping() {
local x=0
while [ $x -le 255 ]; do
    bping $1.$x
    let x++
done
}
提示用户输入一个IP地址或网络地址;获取其网络,并扫描其网段;

좋은 웹페이지 즐겨찾기