首页 > 解决方案 > 在 Bash 中结合局部变量和属性文件中的变量为变量分配多个值

问题描述

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

例如:我想获得输出$FILE_NAME作为从变量和字符串PADPCD.BCL.ADP6(0)$FILE_NAME获取值的位置,这些变量和字符串在配置属性中生成变量。$SENDER_BPID_PROD_FILE_NAME

如果我保留FILE_NAME=${ADP6_PROD_FILE_NAME}其具有静态值 ( ADP6) 但我想使用来自变量的值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)'

标签: linuxbash

解决方案


在我的主机上:

$ . ./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小提琴


推荐阅读