![IP 주소가 포함된 변수에 대해 연산을 수행합니다.](https://linux55.com/image/78403/IP%20%EC%A3%BC%EC%86%8C%EA%B0%80%20%ED%8F%AC%ED%95%A8%EB%90%9C%20%EB%B3%80%EC%88%98%EC%97%90%20%EB%8C%80%ED%95%B4%20%EC%97%B0%EC%82%B0%EC%9D%84%20%EC%88%98%ED%96%89%ED%95%A9%EB%8B%88%EB%8B%A4..png)
변수가 있어요
network="198.168.1.x" # for ex. 198.168.1.254
새 변수를 만들고 싶습니다.
next_serv="198.168.1.(x-1)" # for ex. 198.168.1.253
max_host="198.168.1.(x-2)" # for ex. 198.168.1.252
어떻게 하나요?
답변1
network="198.168.1.254"
IFS="." read -r a b c d <<< "$network"
next_serv="$a.$b.$c.$(($d-1))"
echo "$next_serv"
산출:
198.168.1.253
답변2
쉬운 방법은 값을 "."으로 분할하는 것입니다. 표시하고 수학을 수행하고 결과를 다시 합치십시오.
awk 사용(구분자 처리 등):
this_serv=192.168.1.100
next_serv=$(echo $this_serv | awk -F. '{printf "%d.%d.%d.%d", $1,$2,$3,$4-1}')
답변3
매개변수 확장 사용:
$ network="198.168.1.254"
$ next_serv="${network%.*}.$((${network##*.} - 1))"
$ max_host="${network%.*}.$((${network##*.} - 2))"
$ echo "$next_serv"
198.168.1.253
$ echo "$max_host"
198.168.1.252