在bash中配置配置文件



我的问题如下:

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

例如,假设我有4类动物:猫、狗、马和老鼠。如果打印的项目对应于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"

作为我想做什么的一个例子

print语句使用路径${MAINPATH}/${SUBPATH}访问目录,其中MAINPATH定义为/home/jt8146SUBPATH定义为猫、狗、马或鼠标。它根据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将被分配给变量cat1blackcat将被分配到变量cat2等等

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

我的问题是:

1( 一旦配置已经填充,如何将变量分配给配置的内容?

2( 关于堆栈溢出,是否有类似的问题,有人可以向我指出,以回答我未能找到的上述问题?

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

cat1="whitecat"
cat2="blackcat"

现在,您需要具有whitecat的变量cat1cat2和CCD_ 25值。您可以通过获取配置来做到这一点文件:

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

(请注意,这里的$是一个命令行促使用于指示新行的开始,而不是命令的一部分(。

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

我假设您给出的第一个文件名为config,类别(cathorse等(包含在变量$category中。在我们的示例中,$category的值为cat

首先,您必须生成一个文件,比如说包含v.gr.的"$category.config"

cat1="whitecat" 
cat2="blackcat"

按以下方式操作:

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

现在,要使"$category.config"中定义的变量可供当前脚本访问,必须此文件。使用. "$category.config"语句可以实现这一点,这意味着$category.config的内容必须在当前点来源于当前脚本。

演示:

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

将产生下一个输出:

before sourcing: cat1 = 
after sourcing: cat1 = whitecat

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

最新更新