我有一台具有多个 VLAN 的 Debian 服务器。所有 VLAN 都从 1 开始。我需要从文件中读取所有 IP,并将所有这些输出到其他文件中。一切正常,但我遇到了增量变量的问题。
if [ -f /root/ip ]; then
for IP_ADD in `grep -v ^# /root/ip`; do
eth=1
eth=`expr $eth + 1`
cat >> "/root/inter" <<END
auto eth0:$eth
iface eth0:$eth inet static
address $IP_ADD
netmask 255.255.255.0
END
done
fi
运行此脚本后,我在文件“inter”中输出:
auto eth0:2
iface eth0:2 inet static
address 192.168.110.1
netmask 255.255.255.0
auto eth0:2
iface eth0:2 inet static
address 192.168.109.1
netmask 255.255.255.0
auto eth0:2
iface eth0:2 inet static
address 192.168.108.1
netmask 255.255.255.0
auto eth0:2
iface eth0:2 inet static
address 192.168.107.1
netmask 255.255.255.0
我的变量 eth 已增加,但只增加一次。哪里出错了?请帮忙。
答案1
每次迭代时,您总是将变量重置回 1。
将初始
eth=1
跳出循环。
其他小问题:您不需要分叉一个进程来进行计算:
let "eth=$eth + 1"
是 bash 内部。