Как использовать ipcalc для проверки IP в скрипте Bash? - PullRequest
0 голосов
/ 25 октября 2019

Мне нужно проверить IP с помощью bash-скрипта и, если он действителен, запустить другую команду. я использовал команду ipcalc . но не уверен, зачем возвращать неправильный результат ... Я изменил 0 на 1 .. false .. true , но так и не получил действительный . Вот код:

#!/bin/bash
if [[ $(ipcalc -cs 8.8.8.8) = 0 ]]
 then
  echo "valid"
 else
  echo "invalid"
fi

, но этот работает нормально в bash-скрипте и в командной строке:

[root@sv89]# ipcalc -cs 8.8.8.8 && echo valid || echo invalid
valid
[root@sv89]# ipcalc -cs 8.8.8.256 && echo valid || echo invalid
invalid

Ответы [ 2 ]

2 голосов
/ 25 октября 2019

Сценарий, который вы ищете:

if ipcalc -cs 8.8.8.8
 then
  echo "valid"
 else
  echo "invalid"
fi

Это эквивалентно отправленной вами командной строке.

$() - это подстановка команд. Он запускает прилагаемую команду и заменяет все выражение выводом команды (что не является тем, что вам нужно).

Чтобы проверить код выхода команды, вы просто помещаете команду в ifзаявление. Вот как if [...] работает в системах, где [ является символической ссылкой на внешнюю программу test.

0 голосов
/ 25 октября 2019

Вам нужно проверить возвращаемое значение, а не значение, которое выводится на стандартный вывод.

#!/bin/bash
ipcalc -cs 8.8.8.8
if $?
 then
  echo "valid"
 else
  echo "invalid"
fi

В земле оболочки ноль - это правда, ненулевое - это ложь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...