호출이 두 개의 변수를 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
숫자를 구하여 합에 저장하겠습니다.$HOSTALIAS
app.properties
$SerID
$HosID
$SERVICEDESC
$HOSTALIAS
또는 템플릿을 인쇄하기 위해 일반적으로 이 스크립트를 호출하는 다른 서비스나 응용 프로그램에서 이러한 값을 얻을 수 있기 때문에 선언 되지 않았습니다 . 하지만 다른 프로세스를 시작하려면 언급된 변수의 값을 추출해야 합니다.
이 문제를 해결하는 데 도움을 주실 수 있나요?
답변1
아직 정의하지 않았 $SERVICEDESC
으므로 $HOSTALIAS
값이 없습니다.
$SerID
또한 그런 다음 이를 사용하여 sum 값을 얻으려고 시도합니다 $HosID
. 이는 다시 일치하는 항목이 없음을 의미합니다.
몇 가지 의견
bash
스크립트 인 경우 로 시작합니다#!/bin/bash
. 지금 가지고 있는 것은 Bourne 쉘 스크립트(sh
)입니다.템플릿 할당을 이것으로 바꾸십시오.
template="***** Test ***** Notification Type: $NOTIFICATIONTYPE APP: $SERVICEDESC Server: $HOSTALIAS TEMPLATE "