如何从单独文件中的另一个变量分配一个变量

如何从单独文件中的另一个变量分配一个变量

我有一个包含一堆变量的文件,例如:

文件

DEVICE0_USB="usbSerialNo1"
DEVICE1_USB="usbSerialNo2"

我想将这些变量的内容分配给脚本中的变量,例如:

脚本

FAX_MACHINE_USB=$DEVICE0_USB
COFFEE_MAKER_USB=$DEVICE1_USB

这样当我echo $FAX_MACHINE_USB收到usbSerialNo1

我可以用来source获取变量文件但这也会运行中的每一行文件。就我而言,这不是问题,因为文件只有变量声明,但我仍然不想这样做。还有其他方法可以实现吗?

答案1

似乎回答了类似的问题这里

如果您愿意的话,您当然可以使用.source来分配变量,但您也可以使用awkgrep来仅运行文件中的特定行就像可变减速度一样。

如何处理许多变量

如果您想获取 中分配的所有变量script1.sh,请考虑:

source <(grep -E '^\w+=' script1.sh)

这用于grep从中提取script1.sh看起来像变量赋值的所有行。然后这些行在当前 shell 中运行,并分配变量。

如果您使用此方法,请首先检查以确保您需要所有变量,并且没有任何变量会干扰您正在做的事情。如果存在这样的情况,我们可以使用第二个 grep命令排除它们。

依次考虑各个部分:

  • source filefile告诉 shell在当前 shell 中执行。

  • <(...)称为过程替代。它允许我们使用命令的输出来代替文件名。

  • 该命令grep -E '^\w+=' script1.sh提取所有看起来像变量赋值的行。如果您在命令行上单独运行此命令,您应该看到类似以下内容:

    variable="Hello"
    var2="Value2"
    

    等等。您应该首先执行此操作并检查输出以确保这些是您想要执行的行。

相关内容