bash
  • shell
  • 2011-08-18 78 views 0 likes 
    0

    我定义一个变量变量替换到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的变量的实际替代我看到没有参数传递。我在这里错过了什么吗?

    +0

    这很奇怪。你可以在开头打印$ 1和/或用'sh -x'执行shell脚本吗?这会给你提示。 –

    +0

    你怎么知道没有参数被传递?你有错误信息吗?在这种情况下,你可以发布它吗?如果你的exportcli程序试图在stdout而不是stderr上报告错误,你能删除>/dev/null吗? –

    +0

    使用'-x'我得到了下面的结果'++。 /mnt/.kumara/automation/exportcli.cfg +++ TFA_ST = 1312464957000 ... <所有剩余的取代> +++ EXPORT_FLT_2 = '' ++ echo'但'echo $ 1'结果为空 –

    回答

    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 
    

    (注意,在变量名没有$饰)。

    +0

    你能用这个输出更新你的问题,并把它放在一个代码块中吗?这会让阅读更容易。 –

    +0

    但是,如果我正确解析这个,似乎EXPORT_FLT_2是在exportcli.cfg文件中定义的,因为@ qiaomuf和我在他的答案中涉及到。 –

    +0

    我试着用你在答案中精心调试过的所有技巧。然而,即使我很难看到'-x'实际定义的变量,'echo $ 1'结果为空,当我运行'sh -x $。/ export.sh“$ EXPORT_FLT_2”'时。我的猜测是exportcli.cfg文件中的定义可能存在某种错误...但不确定:( –

    相关问题