呼び出しは2つの変数を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 "