在bash中配置配置文件

时间:2020-03-23 13:06:22

标签: bash

我的问题如下:

  • 我将打印语句的输出定向到配置文件中。
  • 运行print语句时,它将返回多个项目。当。。。的时候 项目将输出到配置
  • 我想为每个变量分配一个变量名,以便以后使用。
  • 我希望分配基于原始打印语句中使用的变量。

例如,说我有四类动物:猫,狗,马和老鼠。如果要打印的项目对应于cat变量(在print语句中使用),那么我希望为这些项目分配cat1,cat2等的变量名称。这是为了区分不同的变量类型并有效地使用它们后来。

注意:我打算一次只用这4个类别之一填充配置,然后每次运行print语句时,我都会覆盖配置文件的内容。

所以我的配置文件在分配之前(执行print语句之后)将如下所示。

   whitecat
   blackcat

#or like this

   brownhorse
   greyhorse

我希望分配后看起来像这样。

   cat1="whitecat" 
   cat2="blackcat"

#or like this

   horse1="brownhorse"
   horse2="greyhorse"

这里是我想要做的事的例子。

打印语句使用路径${MAINPATH}/${SUBPATH}访问目录,其中MAINPATH被定义为/home/jt8146,而SUBPATH被定义为cat,dog,horse或mouse。它基于SUBPATH提取与该动物有关的信息。也就是说,如果SUBPATH被定义为cat,则它将输入配置文件信息,例如whitecatblackcat

因此完整路径看起来像/home/jt8146/cat

一旦此信息已输出到配置文件,我希望将信息whitecatblackcat分配给一个变量。但是,我不必进入配置文件并键入任务,而是希望信息一旦执行便自动执行。获取输出到配置文件。

所以我当时想我要创建一个包含ifelif语句(即if SUBPATH = cat then do assignment cat1, cat2 to each element in the config file

)的函数

在执行if语句之前,如果配置文件如下所示

whitecat
blackcat
yellowcat
greencat

然后将whitecat分配给变量cat1,将blackcat分配给变量cat2,依此类推。

print语句是我正在使用的另一个应用程序的内置命令,它从指定的路径检索信息。 print语句正在运行,并且该信息在配置文件中但未分配,这是我需要帮助的地方。

我的问题是:

1)一旦配置已被填充,如何为配置的内容分配变量?

2)堆栈溢出是否存在类似的问题,有人可以指出我的答案吗?

2 个答案:

答案 0 :(得分:0)

IIUC,您有一个名为config的文件,如下所示:

cat1="whitecat"
cat2="blackcat"

现在,您要具有cat1的变量cat2whitecatblackcat值。您可以通过获取配置来做到这一点 文件:

$ . config
$ echo $cat1
whitecat
$ echo $cat2
blackcat

(请注意,$command line prompt 用来表示新行的开始,而不是命令的一部分。

.是Bash和执行 sourcing 的其他Shell中的命令, 表示读取作为参数给出的文件,并作为shell命令执行其中的每一行。

答案 1 :(得分:0)

我想您提供的第一个文件称为config,类别(cathorse等)包含在变量$category中。在我们的示例中,$category的值为cat

首先,您必须生成一个文件,假设"$category.config"包含v.gr。

cat1="whitecat" 
cat2="blackcat"

通过以下方式进行操作:

awk -v category="$category" '{print category""NR"=\""$0"\""}' config > "$category.config"

现在,您想使"$category.config"中定义的变量可被当前脚本访问,则必须 source 。使用. "$category.config"语句可以做到这一点,这意味着$category.config的内容必须在当前点源于当前脚本。

演示:

echo before sourcing: cat1 = $cat1
. cat.config
echo after sourcing: cat1 = $cat1

将产生下一个输出:

before sourcing: cat1 = 
after sourcing: cat1 = whitecat

我可以发布. cat.config而不是. "$category.config"