我正在尝试更改存储为变量的 IP 地址的最后一位数字:
ip=$(ifconfig eth0 | grep "inet addr" | awk -F: '{print $2} | awk '{print $1}')
输出将是192.168.0.1
,但我想做的是使用不同的最后一个八位字节设置变量,例如192.168.0.2
答案1
该nextip()
shell 函数通过更改最后一位数字来打印下一个可能的 IP 地址。
#!/bin/sh
nextip() {
d=${1##*.}
while true; do
d=$(( (d+1) & 255 ))
case $d in
0|255) ;;
*) break
esac
done
echo ${1%.*}.$d
}
nextip 192.168.0.1
nextip 192.168.0.254
输出:
192.168.0.2
192.168.0.1
您可以将其与命令替换一起使用:
ip1=$(ifconfig eth0 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}')
ip2=$(nextip $ip1)