【发布时间】:2018-10-18 13:13:16
【问题描述】:
这是问题的变体:How have both local and remote variable inside an SSH command
如何将“ssh 变量”B 获取到我的本地计算机?
A=3
ssh host@name "echo $A; B=5; echo $A; echo \$B;"
echo $A
echo $B
echo \$B
返回 3,NOTHING,$B
如何在本地访问 B 的值?
基于cmets的一些解释: 我正在使用 bash 脚本来访问远程主机以修改那里的一些内容,其中包括在那里创建一个工作区。这个工作区的位置是我想要存储在一个变量中并保存以备后用。
基本上,我有一个功能可以转到远程主机并创建工作区,然后还有另一个功能可以使用该工作区的路径在那里做其他事情。
我希望有一个轻量级、纤薄的解决方案,可以通过类似下面的命令进行集成和轻松读取:
ssh host@name "ws_allocate myworkspace; workspace=ws_find myworkspace;"
然后在本地使用 $workspace。这是一个更大的 bash 脚本的一部分,对于非专业 bash 用户(比如我自己)来说应该很容易理解......
【问题讨论】:
-
您可以将远程变量的内容保存在一个文件中,然后在您的本地主机中恢复文件内容。
-
这对我来说太复杂了;)
-
为什么?编写本地脚本,scp 将本地脚本上传到远程服务器,ssh 执行脚本并将结果存储在 /tmp 文件中(在远程服务器中),scp 下载响应,然后在本地处理答案。
-
想一想:您希望在本地 shell 中定义一个由远程 shell 定义的变量。这是一些重要的进程间通信;这并不简单。
-
另一方面,如果您的示例是准确的,并且赋值语句在
ssh的参数中是硬编码的,那么您为什么不直接在本地定义它呢?