如何返回$以外的值?来自ssh会议
例如:
x=5
echo "$x"
ssh -o StrictHostKeyChecking=no root@hostname "x=10"
echo "$x"
这将打印
5
5
但我需要新的价值
5
10
答案 0 :(得分:12)
试试这个:
x=5
echo "$x"
x=$(ssh -o StrictHostKeyChecking=no root@hostname 'x=10; echo $x')
echo "$x"
这里发生的是捕获远程执行的命令的输出,并将该输出分配给本地变量x
。请注意,我使用单引号而不是双引号来引用远程命令:'x=10; echo $x'
。双引号中的字符串中的$x
在被发送到远程主机之前将被本地x
的值替换,因此您将通过远程命令打印并分配给您的本地{{1} }。
答案 1 :(得分:2)
您可以按照以下方式执行此操作:
x=5
echo "$x"
ssh -o StrictHostKeyChecking=no root@hostname 'x=10; exit $x'
echo "$?"
<强>解释强>
'x=10; exit $x'
- 这些是您通过ssh
传递以在root@hostname
上远程运行的说明。因此,您希望将它们用单引号括起来而不是双引号,以防止在本地shell中自动扩展$x
。x
不是通过x
会话生成的远程shell中的ssh
。 $?
是一个特殊的shell变量,用于存储最近运行的命令在本地shell中的退出状态。由于我们告诉ssh
会话退出10
,因此使用echo "$?"
打印的内容