我有两个脚本正在运行。 一个从客户端工作站上运行,并在服务器上调用的脚本。 我需要从服务器脚本变量,我想我可以做这种方式,但它不工作:
#!/bin/sh
local_var=""
ssh user@server " $local_var=\$server_var "
echo "$local_var"
我local_var的输出为null。 有没有办法做到这一点?
我有两个脚本正在运行。 一个从客户端工作站上运行,并在服务器上调用的脚本。 我需要从服务器脚本变量,我想我可以做这种方式,但它不工作:
#!/bin/sh
local_var=""
ssh user@server " $local_var=\$server_var "
echo "$local_var"
我local_var的输出为null。 有没有办法做到这一点?
尝试:
local_var=$(ssh user@server "echo ${server_var}")
是的,你需要打印变量名和值,那么源的输出。 一个例子:
$ source <(ssh user@server 'echo foo=\"$bar\"')
$ echo $foo
bar
这适用于庆典,它可能无法在不支持重定向命令输出到贝壳工作source
。 对于那些贝壳,你可能需要先创建一个临时文件。
我打算让3个假设:
假设上面,下面应该工作:
local_var=$( ssh user@server bash -c '
while IFS="=" read -d '' -r name value; do
[[ $name = "server_var" ]] && echo $server_var && break
done' < /proc/$REMOTE_SCRIPT_PROC_ID/environ )