如何返回$以外的值?從SSH會話
例如:
x=5
echo "$x"
ssh -o StrictHostKeyChecking=no [email protected] "x=10"
echo "$x"
這將打印
5
5
但我需要新的價值
5
10
如何返回$以外的值?從SSH會話
例如:
x=5
echo "$x"
ssh -o StrictHostKeyChecking=no [email protected] "x=10"
echo "$x"
這將打印
5
5
但我需要新的價值
5
10
打印試試這個:
x=5
echo "$x"
x=$(ssh -o StrictHostKeyChecking=no [email protected] 'x=10; echo $x')
echo "$x"
這裏發生的是你捕獲命令的輸出,遠程執行,並分配輸出到您的本地變量x
。請注意,我使用單引號(而不是雙引號)來引用遠程命令:'x=10; echo $x'
。 $x
在發送到遠程主機之前將被替換爲本地x
的值,因此您將得到5個由遠程命令打印並分配給本地的x
。
可以按如下方式做到這一點:
x=5
echo "$x"
ssh -o StrictHostKeyChecking=no [email protected] 'x=10; exit $x'
echo "$?"
說明:
'x=10; exit $x'
- 這些都是要在[email protected]
遠程運行您通過ssh
傳遞指令。因此,您希望將它們用單引號而不是雙引號括起來,以防止在本地shell中自動擴展$x
。x
是不在通過您的ssh
會議催生了遠程shell相同x
。$?
是一個特殊的shell變量,它將最近運行的命令的退出狀態存儲在本地shell中。因爲我們告訴ssh
會議與10
退出,這就是它與echo "$?"
謝謝。這實際上很簡單。我不知道爲什麼我沒有想到這一點。 – xoq
不用擔心,不客氣。 – piokuc