#!/bin/sh
#
# found if this IP is receiving data
#
#echo hexIpAdd=`sh convertIPAddressToHex $1`
hexIpAdd='C0 A8 01 02'
#`snmpwalk -v 2c -c public 192.168.252.187 .1.3.6.1.4.1.231.7.1.2.2.1.4.7.13.1.1.3301 | grep '$hexIpAdd' | wc -l`
if [ `snmpwalk -v 2c -c public 192.168.252.187 .1.3.6.1.4.1.231.7.1.2.2.1.4.7.13.1.1.3301 | grep '$hexIpAdd' | wc -l` -gt 0 ]; then
echo "Value FOUND!!"
else
echo "Value NOT FOUND!!"
fi
Код очень прост, я конвертирую обычный IP-адрес в шестнадцатеричный и запрашиваю через SNMPWALK сетевое оборудование, чтобы узнать, получает ли преобразованный IP-поток потоковое вещание.Почему grep не использует мою переменную в этом сценарии оболочки?
Проблема заключается в том, что труба grep не использует ПЕРЕМЕННУЮ, со средствами, если я заменяю "grep '$hexIpAdd'"
на этот "grep 'C0 A8 01 02'"
, он работает.
Дубликат - это ваша главная проблема, хотя я бы также предложил изменить вашу строку на 'if snmpwalk -v 2c -c public 192.168.252.187 .1.3.6.1.4.1.23 1.7.1.2.2.1.4.7.13.1.1.3301 | grep -q "$ hexIpAdd"; затем ' –
** Спасибо ... он работает сейчас ** –
Рад узнать, что это сработало, [вы можете отметить ответ как принятый, щелкнув на галочке ** слева вверху этого ответа] (http : //meta.stackexchange.com/a/5235/160242) – anubhava