назначить подстроку переменной без использования echo - PullRequest
0 голосов
/ 27 июня 2018

У меня есть сценарий SNMP pass, который я запускаю, и по какой-то причине, которую я пока не понимаю, дополнительное использование echo в сценарии приводит к тому, что сценарий не выполняется. Моя точная проблема сейчас заключается в том, что мне нужно взять подстроку из переменной REQ и присвоить ее другой переменной. Ниже приведен метод, который работает в теории, но не работает в моей ситуации из-за использования echo.

DGROUP_NODE=`echo $REQ | cut -d. -f3`

Есть ли другой способ сделать это, не мешая чтению сценария? Я заметил, что printf также имеет ту же проблему, хотя и реже. (Эта проблема также не позволяет мне использовать echo или printf для отладки моего кода ...)

ПРИМЕЧАНИЯ: Когда echo вызывает проблемы при выполнении скрипта, ошибки не возвращаются (относительно скрипта). Я получаю только No Such Instance currently exists at this OID, который говорит мне, что скрипт не был запущен, в результате чего мое дерево OID не строится.

Если я запускаю сценарий вне SNMP, он работает как положено.

Ответы [ 3 ]

0 голосов
/ 27 июня 2018

Добавьте эхо с $ из вашего кода следующим образом:

DGROUP_NODE=$(echo $REQ | cut -d. -f3)
0 голосов
/ 28 июня 2018

Если, например, я хотел просто PEN:

TREE=.1.3.6.1.4.1.8072.2.255
CHOP=.1.3.6.1.4.1.
PEN=${TREE##*$CHOP} # remove $CHOP from beginning (## = longest match from beginning)
PEN=${PEN%%.*} # keep everything before first period (%% = longest match from end)

Выход:

8072

Подробнее об этом методе здесь: извлечение части строки

0 голосов
/ 27 июня 2018

Используйте set +x, затем запустите снова. Я уверен, что проблема в том, что $RET пусто.

...