我有两个正在运行的脚本。一个从客户端工作站运行并在服务器上调用脚本。我需要从服务器脚本变量,我想我可以做这种方式,但它不工作:从SSH服务器分配变量到本地机器变量
#!/bin/sh
local_var=""
ssh [email protected] " $local_var=\$server_var "
echo "$local_var"
我local_var的输出为null。有没有办法做到这一点?
我有两个正在运行的脚本。一个从客户端工作站运行并在服务器上调用脚本。我需要从服务器脚本变量,我想我可以做这种方式,但它不工作:从SSH服务器分配变量到本地机器变量
#!/bin/sh
local_var=""
ssh [email protected] " $local_var=\$server_var "
echo "$local_var"
我local_var的输出为null。有没有办法做到这一点?
尝试:
local_var=$(ssh [email protected] "echo ${server_var}")
是的,您需要打印变量名称和值,然后源输出。举个例子:
$ source <(ssh [email protected] 'echo foo=\"$bar\"')
$ echo $foo
bar
这部作品庆典,它可能无法在不支持命令输出重定向到source
弹工作。对于这些shell,您可能需要先创建一个临时文件。
我打算让3个假设:
假设以上,以下应工作:
local_var=$(ssh [email protected] bash -c '
while IFS="=" read -d '' -r name value; do
[[ $name = "server_var" ]] && echo $server_var && break
done' < /proc/$REMOTE_SCRIPT_PROC_ID/environ)
我'我仍然测试这个,但我认为这可能是解决方案 –
我没有这个运气,我试着按照你的方式打字,但我的变量仍然是空的,我也尝试添加这样的空间:local_var = $(ssh user @ server“echo $ {server_var}”) –
你确定在远程系统上设置了server_var吗? – devnull