如何获取变量';在UNIX中使用source命令从文件中获取的名称?
我有一个名为如何获取变量';在UNIX中使用source命令从文件中获取的名称?,unix,Unix,我有一个名为param1.txt的文件,其中包含某些变量。我还有另一个文件source1.txt,其中包含占位符。我想用从参数文件中获取的变量值替换占位符 我已经基本上硬编码了脚本,parameter.txt文件中的变量名是已知的。我想知道一个动态的解决方案,在这个问题中,变量名是事先不知道的。换句话说,在UNIX中使用source命令有没有办法找出文件中的变量名 这是我的脚本和文件 脚本: #!/bin/bash source /root/parameters/param1.txt sed "
param1.txt
的文件,其中包含某些变量。我还有另一个文件source1.txt
,其中包含占位符。我想用从参数文件中获取的变量值替换占位符
我已经基本上硬编码了脚本,parameter.txt
文件中的变量名是已知的。我想知道一个动态的解决方案,在这个问题中,变量名是事先不知道的。换句话说,在UNIX中使用source
命令有没有办法找出文件中的变量名
这是我的脚本和文件
脚本:
#!/bin/bash
source /root/parameters/param1.txt
sed "s/{DB_NAME}/$DB_NAME/gI;
s/{PLANT_NAME}/$PLANT_NAME/gI" \
/root/sources/source1.txt >
/root/parameters/Output.txt`
PLANT_NAME=abc
DB_NAME=gef
kdashkdhkasdkj {PLANT_NAME}
jhdbjhasdjdhas kashdkahdk asdkhakdshk
hfkahfkajdfk ljsadjalsdj {PLANT_NAME}
{DB_NAME}
param1.txt:
#!/bin/bash
source /root/parameters/param1.txt
sed "s/{DB_NAME}/$DB_NAME/gI;
s/{PLANT_NAME}/$PLANT_NAME/gI" \
/root/sources/source1.txt >
/root/parameters/Output.txt`
PLANT_NAME=abc
DB_NAME=gef
kdashkdhkasdkj {PLANT_NAME}
jhdbjhasdjdhas kashdkahdk asdkhakdshk
hfkahfkajdfk ljsadjalsdj {PLANT_NAME}
{DB_NAME}
source1.txt:
#!/bin/bash
source /root/parameters/param1.txt
sed "s/{DB_NAME}/$DB_NAME/gI;
s/{PLANT_NAME}/$PLANT_NAME/gI" \
/root/sources/source1.txt >
/root/parameters/Output.txt`
PLANT_NAME=abc
DB_NAME=gef
kdashkdhkasdkj {PLANT_NAME}
jhdbjhasdjdhas kashdkahdk asdkhakdshk
hfkahfkajdfk ljsadjalsdj {PLANT_NAME}
{DB_NAME}
我不能评论,因为我没有足够的分数。 但这就是你想要的,对吗
你的问题陈述我不太清楚。也许你可以简化你的问题和你想要的状态。我不能评论,因为我没有足够的观点。 但这就是你想要的,对吗
你的问题陈述我不太清楚。也许您可以简化您的问题和所需的状态。不明白为什么要尝试获取param1.txt。
您可以尝试使用此awk:
awk '
NR == FNR {
a[$1] = $2
next
}
{
for ( i = 1 ; i <= NF ; i++ ) {
b = $i
gsub ( "^{|}$" , "" , b )
if ( b in a )
sub ( "{" b "}" , a[b] , $i )
}
} 1' FS='=' param1.txt FS=" " source1.txt
awk'
NR==FNR{
a[$1]=2美元
下一个
}
{
对于(i=1;i我不明白您为什么试图获取param1.txt。
您可以尝试使用此awk:
awk '
NR == FNR {
a[$1] = $2
next
}
{
for ( i = 1 ; i <= NF ; i++ ) {
b = $i
gsub ( "^{|}$" , "" , b )
if ( b in a )
sub ( "{" b "}" , a[b] , $i )
}
} 1' FS='=' param1.txt FS=" " source1.txt
awk'
NR==FNR{
a[$1]=2美元
下一个
}
{
对于(i=1;实际上我不知道。在这个特定的回答中,程序员事先知道变量的名称,因此他可以很容易地“呼应”出它。我感兴趣的是,如果我不知道变量的名称,我将如何打印它的值。你不能,因为你不知道。如果你不知道,你怎么知道一些事情呢?事实上不是这样。在这个特定的答案中,程序员事先知道变量的名称,所以他可以很容易地“呼应”出它。我感兴趣的是,如果我不知道变量的名称,我将如何打印它的值。你不能,因为你不知道。如果你不知道,你怎么知道呢。欢迎使用堆栈溢出!欢迎使用大头钉溢出!