Bash

包含 IP 地址的變數的算術運算

  • November 29, 2015

我有變數

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

怎麼做?

簡單的方法是拆分“。”上的值。標記並進行算術運算,再次將結果放在一起。

使用 awk (處理分隔符等):

this_serv=192.168.1.100
next_serv=$(echo $this_serv | awk -F. '{printf "%d.%d.%d.%d", $1,$2,$3,$4-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

引用自:https://unix.stackexchange.com/questions/246132