我有两个正在运行的脚本。一个从客户端工作站运行并调用服务器上的脚本。我需要一个来自服务器脚本的变量,我想我可以这样做,但它不起作用:
#!/bin/sh
local_var=""
ssh user@server " $local_var=\$server_var "
echo "$local_var"
我对local_var的输出为null。有没有办法做到这一点?
答案 0 :(得分:3)
尝试:
local_var=$(ssh user@server "echo ${server_var}")
答案 1 :(得分:2)
是的,您需要打印变量名称和值,然后获取其输出。一个例子:
$ source <(ssh user@server 'echo foo=\"$bar\"')
$ echo $foo
bar
这适用于bash,它可能不适用于不支持将命令输出重定向到source
的shell。对于这些shell,您可能需要先创建一个临时文件。
答案 2 :(得分:1)
我将做出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 )