Назад | Перейти на главную страницу

Bash-скрипт, чтение из файла, увеличение переменной и вывод в другой файл

У меня есть сервер Debian со множеством VLAN. Весь этот 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 на каждой итерации.

Поставьте начальную

eth=1

вне цикла.


Незначительные другие проблемы: вам не нужно разветвлять процесс для выполнения расчета:

let "eth=$eth + 1"

это внутренний bash.