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

    변수 치환이내가 변수를 정의한 문제

    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 
    
    처럼 보이는 내 쉘 스크립트에서이 변수를 사용할처럼 보이는 BASH에서 대체 할 배쉬 쉘

    "$ 1"을 제외한 모든 변수는 exportcli.cfg 파일에 정의되어 있습니다. 이제 스크립트를 실행 한 후

    $./export.sh "$EXPORT_FLT_2" 
    
    과 같은 스크립트를 실행 한 후 0

    변수의 실제 대체 방법이 전달 된 매개 변수가 없습니다. 내가 여기서 뭔가를 놓치고 있니?

    +0

    이상합니다. 처음에 $ 1을 인쇄하거나 쉘 스크립트를'sh -x'로 실행할 수 있습니까? 그것은 당신에게 힌트를 줄 것입니다. –

    +0

    매개 변수가 전달되지 않는다는 것을 어떻게 알 수 있습니까? 오류 메시지가 나타 납니까? 이 경우 게시 할 수 있습니까? exportcli 프로그램이 stderr 대신 stdout에서 오류를보고하려고 할 경우>/dev/null을 제거 할 수 있습니까? –

    +0

    '-x' 사용하기 다음과 같은 결과가 있습니다.'++. /mnt/.kumara/automation/exportcli.cfg +++ TFA_ST = 1,312,464,957,000 ... <나머지 모든 대체> +++ EXPORT_FLT_2 = '

    답변

    1

    여기에서 오류를 즉시 발견 할 수는 없지만 시도해 보겠습니다.

    1 : 정의한 변수가 실제로 정의되었는지 확인하기 위해 쉘에 echo $EXPORT_FLT_2을 실행하십시오.

    2 : export.sh 스크립트의 여러 지점에서 스틱 echo $1을 맨 위에서 차례로 차례로 사용합니다. 변수가 어딘가에 엉망이되는지보십시오.

    3 : sh -x export.sh "$EXPORT_FLT_2"을 실행하여 스크립트가 각 단계에서 실제로 실행하는 것을 확인하십시오.

    이것은 무슨 일이 일어나고 어디에서 오류가 발생했는지 정확하게 감지하는 데 도움이됩니다.

    업데이트

    EXPORT_FLT_2 변수가 아닌 셸에서 설정 파일에 정의되어 보인다.

    $ ./export.sh EXPORT_FLT_2 
    

    (주 변수 이름에 아무런 $ 장식)로 스크립트를 ${!1}에 스크립트에서 $1를 변경하고 전화하세요.

    +0

    질문을이 출력으로 업데이트하고 코드 블록에 넣을 수 있습니까? 그렇게하면 더 쉽게 읽을 수 있습니다. –

    +0

    하지만이 구문을 올바르게 해석하면 EXPORT_FLT_2가 exportcli.cfg 파일에 정의되어있는 것처럼 보입니다. @qiaomuf와 나 자신이 답변에 언급했기 때문입니다. –

    +0

    나는 당신이 당신의 대답에서 언급 한 모든 디버깅 트릭을 사용해 보았습니다. 그렇지만'-x $./export.sh "$ EXPORT_FLT_2"'를 실행하면 실제로'-x'에 정의 된 변수를 볼 수 있습니다.'echo $ 1' 결과는 공백으로 나타납니다.내 생각 엔 exportcli.cfg 파일의 정의에 어떤 종류의 오류가있을 수 있습니다. 그러나 확실하지 않습니다 : ( –

    관련 문제