【发布时间】:2022-01-13 20:22:12
【问题描述】:
首先,很抱歉提出一个愚蠢的问题。
我想通过在 shell 脚本下使用以下示例代码从远程目标获取分发信息。我的本地机器是 Ubuntu16.04,远程目标是 Ubuntu20.04(192.168.100.15)。但是,当我运行 shell 脚本时,$distribution 的值是 ubuntu16.04。
为什么值不是Ubuntu20.04?以及我应该如何正确修改我的代码?
ssh root@192.168.100.15 "distribution=$(. /etc/os-release;echo ) && echo $distribution"
【问题讨论】:
-
$()内部只有一个空的echo。这不给ubuntu16.04,它给一个空行。 -
直接错误是在子进程中获取文件会在子进程退出后立即丢弃结果。整个
distribution变量在这里似乎没用。 -
您是否希望您的局部变量
distribution拥有来自远程计算机的数据? -
@Thomas 因为我在带有 -x 标志的 shell 脚本下运行此代码,输出显示 $distribution 值为 Ubuntu16.04
-
您已编辑问题以显示双引号而不是单引号。这一切都不同了:
$()和$distribution现在在本地机器上进行评估。这仍然不会导致它显示ubuntu16.04,除非在您运行此命令之前,$distribution已经在您当前的 shell 中设置为该值。