다른 변수에 할당된 후 변수가 기억되지 않음

다른 변수에 할당된 후 변수가 기억되지 않음

호출이 두 개의 변수를 bash 스크립트로 전송하지만 다른 서비스에서 호출되는 bash 스크립트가 있습니다. 글쎄, 이것은 동일한 변수로 완벽하게 인쇄됩니다.

#!/bin/sh
template=`cat <<TEMPLATE
***** Test *****
Notification Type: $NOTIFICATIONTYPE
APP: $SERVICEDESC
Server: $HOSTALIAS
TEMPLATE
`
/usr/bin/printf "%b" "$template"

하지만 변수 속성을 추출하려고 하면

#!/bin/sh
template=`cat <<TEMPLATE
***** Test *****
Notification Type: $NOTIFICATIONTYPE
APP: $SERVICEDESC
Server: $HOSTALIAS
TEMPLATE
`
echo $SERVICEDESC > /tmp/ser
echo $HOSTALIAS > /tmp/ho
SerID=$(cat /root/apps.properties | grep "^$SERVICEDESC" | cut -d'=' -f2);
HosID=$(cat /root/apps.properties | grep "^$HOSTALIAS" | cut -d'=' -f2);
echo $SerID > /tmp/serid
echo $HosID > /tmp/host
/usr/bin/printf "%b" "$template"

$SerID,,, 모두 비어 $HosID있습니다 . 하지만 완벽하게 인쇄됩니다.$SERVICEDESC$HOSTALIAS$template

app.properties다음 앱 및 서버 ID 사용:

app1=5
server1=6
app2=6
server2=7

이것으로부터 합을 일치시키고 $SERVICEDESC숫자를 구하여 합에 저장하겠습니다.$HOSTALIASapp.properties$SerID$HosID

$SERVICEDESC$HOSTALIAS또는 템플릿을 인쇄하기 위해 일반적으로 이 스크립트를 호출하는 다른 서비스나 응용 프로그램에서 이러한 값을 얻을 수 있기 때문에 선언 되지 않았습니다 . 하지만 다른 프로세스를 시작하려면 언급된 변수의 값을 추출해야 합니다.

이 문제를 해결하는 데 도움을 주실 수 있나요?

답변1

아직 정의하지 않았 $SERVICEDESC으므로 $HOSTALIAS값이 없습니다.

$SerID또한 그런 다음 이를 사용하여 sum 값을 얻으려고 시도합니다 $HosID. 이는 다시 일치하는 항목이 없음을 의미합니다.


몇 가지 의견

  1. bash스크립트 인 경우 로 시작합니다 #!/bin/bash. 지금 가지고 있는 것은 Bourne 쉘 스크립트( sh)입니다.
  2. 템플릿 할당을 이것으로 바꾸십시오.

    template="***** Test *****
    Notification Type: $NOTIFICATIONTYPE
    APP: $SERVICEDESC
    Server: $HOSTALIAS
    TEMPLATE
    "
    

관련 정보