[英]Bash Shell variable substitution issue
我已經定義了一個要替換為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
除了“ $ 1”之外,所有正在使用的變量都在exportcli.cfg文件中定義。
$./export.sh "$EXPORT_FLT_2"
在實際替換變量的情況下,我看不到任何參數正在傳遞。 我在這里想念什么嗎?
我無法立即在此處發現錯誤,但這是我會嘗試的方法。
1:在外殼echo $EXPORT_FLT_2
中運行echo $EXPORT_FLT_2
以確認您定義的變量確實已定義。
2:從頂部開始依次在echo $1
export.sh腳本的各個位置粘貼echo $1
。 查看變量是否在某個地方變形。
3:運行sh -x export.sh "$EXPORT_FLT_2"
以查看腳本在每個步驟中實際執行的操作。
這應該有助於更准確地推斷出正在發生的事情以及錯誤的起源。
更新資料
看來EXPORT_FLT_2變量是在您的配置文件中定義的,而不是在您的Shell中定義的。 嘗試將腳本中的$1
更改$1
${!1}
然后將腳本調用為
$ ./export.sh EXPORT_FLT_2
(請注意,變量名上沒有$裝飾)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.