Bash Shell变量替换问题

时间:2011-08-18 07:44:40

标签: bash shell

我已经定义了一个在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"

对变量的实际替换进行了检查,我发现没有传递任何参数。我在这里错过了什么吗?

1 个答案:

答案 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)。