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