他の変数に割り当てられた後に変数が記憶されない

他の変数に割り当てられた後に変数が記憶されない

呼び出しは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数字を求めて和に保存します。$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
    "
    

おすすめ記事