在不使用 echo 的情况下将子字符串分配给变量
assign substring to variable without using echo
我有一个 SNMP pass
脚本,我正在 运行ning 并且由于某种我还不明白的原因,在脚本中额外使用 echo
会导致脚本不执行。我现在的确切问题是我需要从一个变量 REQ
中取出一个子字符串,并将其分配给另一个变量。下面是一种理论上可行的方法,但由于使用 echo
而在我的情况下不起作用。
DGROUP_NODE=`echo $REQ | cut -d. -f3`
是否有另一种方法可以在不中断正在读取脚本的情况下执行此操作?我注意到 printf
也倾向于有同样的问题,虽然不那么频繁。 (这个问题还阻止我使用 echo
或 printf
来调试我的代码...)
备注:
当 echo
导致脚本执行出现问题时,不会返回任何错误(关于脚本)。我只得到 No Such Instance currently exists at this OID
,它告诉我脚本不是 运行,导致我的 OID 树没有被构建。
如果我 运行 SNMP 之外的脚本会按预期工作。
使用 set +x
,然后再次使用 运行。我确定问题是 $RET
是空的。
从您的代码中用 $ 将 echo 括起来,如下所示:
DGROUP_NODE=$(echo $REQ | cut -d. -f3)
例如,如果我只想要 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
我有一个 SNMP pass
脚本,我正在 运行ning 并且由于某种我还不明白的原因,在脚本中额外使用 echo
会导致脚本不执行。我现在的确切问题是我需要从一个变量 REQ
中取出一个子字符串,并将其分配给另一个变量。下面是一种理论上可行的方法,但由于使用 echo
而在我的情况下不起作用。
DGROUP_NODE=`echo $REQ | cut -d. -f3`
是否有另一种方法可以在不中断正在读取脚本的情况下执行此操作?我注意到 printf
也倾向于有同样的问题,虽然不那么频繁。 (这个问题还阻止我使用 echo
或 printf
来调试我的代码...)
备注:
当 echo
导致脚本执行出现问题时,不会返回任何错误(关于脚本)。我只得到 No Such Instance currently exists at this OID
,它告诉我脚本不是 运行,导致我的 OID 树没有被构建。
如果我 运行 SNMP 之外的脚本会按预期工作。
使用 set +x
,然后再次使用 运行。我确定问题是 $RET
是空的。
从您的代码中用 $ 将 echo 括起来,如下所示:
DGROUP_NODE=$(echo $REQ | cut -d. -f3)
例如,如果我只想要 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