Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获取变量';在UNIX中使用source命令从文件中获取的名称?_Unix - Fatal编程技术网

如何获取变量';在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;实际上我不知道。在这个特定的回答中,程序员事先知道变量的名称,因此他可以很容易地“呼应”出它。我感兴趣的是,如果我不知道变量的名称,我将如何打印它的值。你不能,因为你不知道。如果你不知道,你怎么知道一些事情呢?事实上不是这样。在这个特定的答案中,程序员事先知道变量的名称,所以他可以很容易地“呼应”出它。我感兴趣的是,如果我不知道变量的名称,我将如何打印它的值。你不能,因为你不知道。如果你不知道,你怎么知道呢。欢迎使用堆栈溢出!欢迎使用大头钉溢出!