У меня есть сервер 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.