Bash 脚本,从文件读取,增加变量并输出到其他文件

Bash 脚本,从文件读取,增加变量并输出到其他文件

我有一台具有多个 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 内部。

相关内容