我有从不同服务调用的 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
具有以下 APP 和服务器 ID:
app1=5
server1=6
app2=6
server2=7
我将匹配来自 this 的$SERVICEDESC
和,并获取号码并将其存储到和$HOSTALIAS
app.properties
$SerID
$HosID
$SERVICEDESC
或未$HOSTALIAS
声明,因为这些值将由通常调用此脚本来打印输出模板的另一个服务或应用程序获取。但我需要提取这些提到的变量的值以启动另一个进程
你能帮我解决这个问题吗?
答案1
您还没有定义$SERVICEDESC
,$HOSTALIAS
所以它们不会有任何值。
此外,您然后尝试使用它们来获取$SerID
和的值$HosID
,这又意味着它们不匹配任何内容。
一些评论
- 如果是
bash
脚本,则以 开头#!/bin/bash
。您现在拥有的是 bourne shell 脚本 (sh
)。 用这个替换模板分配
template="***** Test ***** Notification Type: $NOTIFICATIONTYPE APP: $SERVICEDESC Server: $HOSTALIAS TEMPLATE "