我定义一个变量变量替换到BASH它看起来像这样bash shell的问题
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
使用这个变量来取代
除了“$ 1”之外,所有变量都在exportcli.cfg文件中定义 现在执行脚本之后,如
$./export.sh "$EXPORT_FLT_2"
Insted的变量的实际替代我看到没有参数传递。我在这里错过了什么吗?
这很奇怪。你可以在开头打印$ 1和/或用'sh -x'执行shell脚本吗?这会给你提示。 –
你怎么知道没有参数被传递?你有错误信息吗?在这种情况下,你可以发布它吗?如果你的exportcli程序试图在stdout而不是stderr上报告错误,你能删除>/dev/null吗? –
使用'-x'我得到了下面的结果'++。 /mnt/.kumara/automation/exportcli.cfg +++ TFA_ST = 1312464957000 ... <所有剩余的取代> +++ EXPORT_FLT_2 = ' ngc_filter_operator> ngc_filters> ngc_filter_configuration>' ++ echo'但'echo $ 1'结果为空 –