我已经定义了一个在BASH中替换的变量,看起来像这个
EXPORT_FLT_2="<ngc_filter_configuration><ngc_filters><ngc_filter>ngc_filter_operator operator='and'><ngc_filter_term type='ip' value='192.168.175.99'/><ngc_filter_term type='ip' value='72.32.127.138'/></ngc_filter_operator></ngc_filter></ngc_filters></ngc_filter_configuration>";
我现在想在我的shell脚本中使用这个变量,它看起来像
. /mnt/.kumara/automation/exportcli.cfg
${PA_HOME}/exportcli -v -1:-1:-1:-1 0x1A2B3C4D $TFA_TRACE_FILE $TFA_ip $TFA_ifn $TFA_ST $TFA_ET "$1" &> /dev/null
md5sum ${TFA_TRACE_FILE}1.cap | cut -d' ' -f1
rm ${TFA_TRACE_FILE}1.cap
在exportcli.cfg文件中定义除“$ 1”以外的所有变量 现在执行像
这样的脚本之后$./export.sh "$EXPORT_FLT_2"
对变量的实际替换进行了检查,我发现没有传递任何参数。我在这里错过了什么吗?
答案 0 :(得分:1)
我无法立即发现错误,但这是我尝试的内容。
1:在shell中运行echo $EXPORT_FLT_2
以确认您定义的变量是否已实际定义。
2:从顶部开始依次将echo $1
粘贴到export.sh脚本中的不同位置。看看变量是否在某个地方被破坏了。
3:运行sh -x export.sh "$EXPORT_FLT_2"
以查看脚本在每一步实际执行的内容。
这应该有助于更准确地说明发生了什么以及错误源自何处。
<强>更新强>
似乎EXPORT_FLT_2变量是在配置文件中定义的,而不是在shell中定义的。尝试将脚本中的$1
更改为${!1}
并将脚本调用为
$ ./export.sh EXPORT_FLT_2
(注意,变量名称上没有$ decoration)。