Проблема замены переменных в Bash Shell - PullRequest
0 голосов
/ 18 августа 2011

Я определил переменную для замены в 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>";

Теперь я хочу использовать эту переменную в моем сценарии оболочки, которая выглядит как

. /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 Ответ

1 голос
/ 18 августа 2011

Я не могу сразу определить ошибку здесь, но вот что я попробую.

1: запустите echo $EXPORT_FLT_2 в вашей оболочке, чтобы убедиться, что переменная, которую вы определили, действительно определена.

2: вставляйте echo $1 в различные точки в вашем скрипте export.sh по очереди, начиная сверху. Посмотрите, не искажается ли переменная где-нибудь.

3: запустите sh -x export.sh "$EXPORT_FLT_2", чтобы увидеть, что скрипт на самом деле выполняет на каждом шаге.

Это должно помочь более точно определить, что происходит и где возникает ошибка.

Обновление

Кажется, переменная EXPORT_FLT_2 определена в вашем конфигурационном файле, а не в вашей оболочке. Попробуйте изменить $1 в вашем скрипте на ${!1} и вызвать ваш скрипт как

$ ./export.sh EXPORT_FLT_2

(заметьте, $ имя переменной не украшено).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...