bash
  • shell
  • 2011-08-18 101 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文件中的定義可能存在某種錯誤...但不確定:( –

    相關問題