Linux 从cat将变量加载到内存中

Linux 从cat将变量加载到内存中,linux,shell,unix,Linux,Shell,Unix,我在服务器上的文件中定义了一个变量列表,我希望将这些变量加载到本地计算机上的脚本中,而不将它们保存到本地计算机上的文件中 服务器上的文件名为variables.properties 假设variables.properties的内容为: 现在,我可以将该文件的内容返回到本地计算机,如下所示: !#/bin/sh vars=$(ssh user@server "cat /variable.properties") echo $vars 是否有一种方法可以将这些变量从$vars变量加载到脚本中,

我在服务器上的文件中定义了一个变量列表,我希望将这些变量加载到本地计算机上的脚本中,而不将它们保存到本地计算机上的文件中

服务器上的文件名为variables.properties

假设variables.properties的内容为:

现在,我可以将该文件的内容返回到本地计算机,如下所示:

!#/bin/sh

vars=$(ssh user@server "cat /variable.properties")
echo $vars
是否有一种方法可以将这些变量从$vars变量加载到脚本中,以便它们在本地计算机上具有相同的名称和值?

请尝试eval$vars

这似乎对我有用。

试试eval$vars

chmod +x /path/to/variables.properties
. /path/to/variables.properties
这似乎对我有用

chmod +x /path/to/variables.properties
. /path/to/variables.properties
这将源文件并创建var1、var2。。。。 这是处理此类问题的常用方法,而不是使用cat

这将源文件并创建var1、var2。。。。
与使用cat相比,这是解决此类问题的常用方法。

任何不运行脚本的简单方法都是:

eval `ssh user@server cat /variable.properties`

任何不运行脚本的简单方法都是:

eval `ssh user@server cat /variable.properties`

如果使用bash而不是sh作为脚本解释器,您可以这样做

source <(ssh user@server "cat /variable.properties")

如果使用bash而不是sh作为脚本解释器,您可以这样做

source <(ssh user@server "cat /variable.properties")

eval到底做什么?@nkon eval接受一个字符串,并像在命令行中键入一样计算它。@nkon:Florin是对的。所以您确实需要小心,因为如果variable.properties包含诸如rm-rf$HOME之类的任何命令,它们都会被执行。@ZanLynx感谢您提供的信息。我不知道它有这么大的功能。你需要$vars左右的引号,否则空格将无法保留,你可能会遇到通配符问题。eval到底做什么?@nkon eval接受一个字符串,并像在命令行中键入一样对其进行计算。@nkon:Florin是正确的。所以您确实需要小心,因为如果variable.properties包含诸如rm-rf$HOME之类的任何命令,它们都会被执行。@ZanLynx感谢您提供的信息。我不知道它有这么大的威力。你需要$vars左右的引号,否则空格将不会被保留,你可能会遇到通配符的问题。为什么否决投票-这是正确的,是的,它不使用cat。考虑UUOC,如果你知道这意味着什么,评论不是针对你的,NKON。通常人们会在否决票上留下评论,告诉你反对意见。为什么否决票——这是正确的,是的,它不使用cat。考虑UUOC,如果你知道这意味着什么,评论不是针对你的,NKON。通常情况下,人们会在否决票上留下评论,告诉你反对意见。但你的上述方法几乎完全相同。source与eval相同,它以命令的形式执行文件中的所有内容。@ZanLynx你说得对。出于某种原因,我觉得source只接受变量声明。我删除了我的编辑。您需要在命令替换前后加引号,否则将不会保留间距,并且您可能会遇到通配符问题。但是您上面的方法几乎完全相同。source与eval相同,它以命令的形式执行文件中的所有内容。@ZanLynx你说得对。出于某种原因,我觉得source只接受变量声明。我删除了我的编辑。您需要在命令替换前后加引号,否则将不会保留间距,并且您可能会遇到通配符问题。请注意,第一个需要使用bash 4或更高版本,因为较旧的版本在该语法方面有问题。也不是说该语法不是特定于bash的。它来自ksh93,也适用于zsh。也不是说该语法不是特定于bash的。它来自ksh93,也适用于zsh。