繁体   English   中英

使用 Bash 中的属性文件中的局部变量和变量的组合为变量分配多个值

[英]Assign multiple values to variable with combination of local variable and variable from property file in Bash

我想从配置属性中分配一个局部变量的值和变量值。

例如:我想为$FILE_NAME获取 output 作为PADPCD.BCL.ADP6(0) ,其中$FILE_NAME从变量$SENDER_BPID和字符串_PROD_FILE_NAME中获取值,它们在配置属性中生成变量。

如果我保留具有 static 值( ADP6 )的FILE_NAME=${ADP6_PROD_FILE_NAME} ,但我想使用变量SENDER_BPID中的值。

FILE_NAME=${$SENDER_BPID"_PROD_FILE_NAME"}不起作用,并给出错误${$SENDER_BPID"_PROD_FILE_NAME"}: bad substitution

你能给我一些指导吗? 谢谢你。

测试.sh

#Load configuration
. /Config.properties

SENDER_BPID=`pwd |awk -F/ '{print $(NF)}'`
echo "Sender BPID is $SENDER_BPID"
#SENDER_BPID value is ADP6

FILE_NAME=${ADP6_PROD_FILE_NAME}
echo "Input prod file name is: $FILE_NAME"

配置属性

ADP6_PROD_FILE_NAME='PADPCD.BCL.ADP6(0)'

在我的主机上:

$ . ./Config.properties                          # define variable "ADP6_PROD_FILE_NAME"
$ echo "${ADP6_PROD_FILE_NAME}"
PADPCD.BCL.ADP6(0)
$ SENDER_BPID='ADP6'                             # result of 'pwd|awk'
$ FILE_NAME="${SENDER_BPID}_PROD_FILE_NAME"      # build name of variable
$ echo "${FILE_NAME}"                            # display name of variable
ADP6_PROD_FILE_NAME
$ echo "${!FILE_NAME}"                           # display value of variable "ADP6_PROD_FILE_NAME"
PADPCD.BCL.ADP6(0)

以下也有效(并且是我推送到小提琴网站的内容):

$ ADP6_PROD_FILE_NAME='PADPCD.BCL.ADP6(0)'       # from the Config.properties file
$ echo "${ADP6_PROD_FILE_NAME}"
PADPCD.BCL.ADP6(0)
$ SENDER_BPID='ADP6'                             # result of 'pwd|awk'
$ FILE_NAME="${SENDER_BPID}_PROD_FILE_NAME"      # build name of variable
$ echo "${FILE_NAME}"                            # display name of variable
ADP6_PROD_FILE_NAME
$ echo "${!FILE_NAME}"                           # display value of variable "ADP6_PROD_FILE_NAME"
PADPCD.BCL.ADP6(0)

这是上面的bash 小提琴

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM