変数があります。
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