У вас на самом деле есть пара проблем с этим скриптом. Основным из них является то, что ipconfig будет выводить символы "\ r" в конце строки, что приводит к сложным вычислениям.
Другое - то, что вы не разрешаете использовать несколько сетевых карт, поэтому мое добавление "head -1"
. Вам нужно будет выбрать, какой сетевой адаптер вы хотите, более разумно.
И, наконец, я убрал начальный пробел (фактически все пробелы) с передней части IP-адреса.
У меня работает следующее:
#!/bin/bash
#set -x
function IPADDRESS {
((v = $4 - 2))
echo $1.$2.$3.$v
}
ADDRESS=$(ipconfig | grep Address | head -1 | cut -f2 -d: | sed 's/[ \r]//g')
echo $ADDRESS
IPADDRESS $ADDRESS
Вывод:
192.168.91.7
192.168.91.5
На самом деле, моя версия выдает следующее:
192.168.91.1
192.168.91.-1
так что вам нужно следить за этим.
Я не новичок в том, чтобы придумывать вывод для управления впечатлениями / уговорами: -).
ПОЛЕЗНАЯ СНЕПЕТКА:
"set -x"
в верхней части скрипта (без комментариев) идеально подходит для поиска ошибок такого рода. Он выводит каждую строку после всех подстановок, но перед выполнением, чтобы вы могли точно видеть, что происходит.