Сценарий 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 увеличивается, но только один раз. Где у меня ошибка? Пожалуйста, помогите.

0
задан 12 October 2016 в 12:41
1 ответ

Вы всегда сбрасываете переменную обратно в 1 на каждой итерации.

Убрать инициал

eth=1

из петли.


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

let "eth=$eth + 1"

является внутренним bash.

1
ответ дан 4 December 2019 в 16:28

Теги

Похожие вопросы