我有兩個正在運行的腳本。一個從客戶端工作站運行並在服務器上調用腳本。我需要從服務器腳本變量,我想我可以做這種方式,但它不工作:從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