在不使用echo的情况下将子字符串分配给变量

时间:2018-06-27 12:51:08

标签: sh echo snmp

我有一个正在运行的SNMP pass脚本,由于某种原因(我尚不了解),脚本中echo的其他使用导致脚本无法执行。现在我的确切问题是,我需要从变量REQ中获取一个子字符串,并将其分配给另一个变量。以下是一种理论上可行的方法,但是由于使用echo而在我的情况下不起作用。

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

还有另一种方法来执行此操作而不中断正在读取脚本的内容吗?我注意到printf也往往有相同的问题,尽管不那么频繁。 (此问题还阻止我使用echoprintf调试代码...)

注释:echo导致执行脚本出现问题时,不会返回任何错误(关于脚本)。我只得到No Such Instance currently exists at this OID,它告诉我脚本未运行,导致我的OID树无法构建。

如果我在SNMP之外运行脚本,则可以正常运行。

3 个答案:

答案 0 :(得分:1)

例如,如果我只想要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

有关此方法的更多信息:extract part of a string

答案 1 :(得分:0)

使用<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <button id="up"> Up </button> <div id="container"> <div id="inner"> </div> </div> <button id="down"> Down </button>,然后再次运行。我确定问题是set +x为空。

答案 2 :(得分:0)

像这样在代码中用$括住echo:

DGROUP_NODE=$(echo $REQ | cut -d. -f3)