我有一个包含一堆变量的文件,例如:
文件
DEVICE0_USB="usbSerialNo1"
DEVICE1_USB="usbSerialNo2"
我想将这些变量的内容分配给脚本中的变量,例如:
脚本
FAX_MACHINE_USB=$DEVICE0_USB
COFFEE_MAKER_USB=$DEVICE1_USB
这样当我echo
$FAX_MACHINE_USB
收到usbSerialNo1
我可以用来source
获取变量文件但这也会运行中的每一行文件。就我而言,这不是问题,因为文件只有变量声明,但我仍然不想这样做。还有其他方法可以实现吗?
答案1
似乎回答了类似的问题这里。
如果您愿意的话,您当然可以使用.
或source
来分配变量,但您也可以使用awk
或grep
来仅运行文件中的特定行看就像可变减速度一样。
如何处理许多变量
如果您想获取 中分配的所有变量
script1.sh
,请考虑:source <(grep -E '^\w+=' script1.sh)
这用于
grep
从中提取script1.sh
看起来像变量赋值的所有行。然后这些行在当前 shell 中运行,并分配变量。如果您使用此方法,请首先检查以确保您需要所有变量,并且没有任何变量会干扰您正在做的事情。如果存在这样的情况,我们可以使用第二个
grep
命令排除它们。依次考虑各个部分:
source file
file
告诉 shell在当前 shell 中执行。
<(...)
称为过程替代。它允许我们使用命令的输出来代替文件名。该命令
grep -E '^\w+=' script1.sh
提取所有看起来像变量赋值的行。如果您在命令行上单独运行此命令,您应该看到类似以下内容:variable="Hello" var2="Value2"
等等。您应该首先执行此操作并检查输出以确保这些是您想要执行的行。