неверный арифметический оператор - PullRequest
0 голосов
/ 16 апреля 2009

работа с cygwin и написание скрипта, показывающего мой текущий IP-адрес минус 2. По какой-то причине он дает мне следующую ошибку: ") синтаксическая ошибка: неверный арифметический оператор (маркер ошибки"

это скрипт, который я использую.

$ cat test3.sh
#!/bin/bash
#
function IPADDRESS { 
    v=$4
    echo $1.$2.$3.$((v-2)) 
}
ADDRESS=$(ipconfig | grep Address | cut -f2 -d :)
# echo $ADDRESS
IPADDRESS ${ADDRESS//\./ }

любая помощь или предложение приветствуется!

Ответы [ 2 ]

4 голосов
/ 16 апреля 2009

У вас на самом деле есть пара проблем с этим скриптом. Основным из них является то, что 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" в верхней части скрипта (без комментариев) идеально подходит для поиска ошибок такого рода. Он выводит каждую строку после всех подстановок, но перед выполнением, чтобы вы могли точно видеть, что происходит.

0 голосов
/ 17 апреля 2009

Я пробовал пару разных комбинаций. Следующее сработало для меня. Набор -x действительно помог. Еще раз спасибо.

#!/bin/bash
#set -x
function IPADDRESS {
    v=$4   
echo $1.$2.$3.$((v-2))
}
ADDRESS=$(ipconfig | grep Address | head -1 | cut -f2 -d: | sed 's/[ \r]//g')
IPADDRESS ${ADDRESS//\./}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...