我无法使用变量var2。这个脚本有什么问题?
#!/bin/bash
var1=$(---some shell cmd---)
echo $var1
read USER_ID
ssh $USER_ID@xx.xx.xx.xx '
var2=$(---some shell cmd---)
echo $var2
'
if [ "$var1" -eq "$var2" ]; then
echo "success\n"
fi
答案 0 :(得分:1)
您的var2
仅存在于远程计算机上。您需要在自己的盒子上捕获值。
var2=$(ssh $USER_ID@xx.xx.xx.xx 'some shell command')
编辑:只是为了让自己更清楚:
SSH命令的概要是:
ssh user@host [command]
command
完全在远程计算机上运行,它通过SSH从本地终端获取标准输入,并通过SSH将stdout和stderr打印到本地终端。
如果是
ssh user@host 'var2=$(command)'
在远程计算机上创建var2
变量,它还在远程计算机上捕获command
的标准输出。在本地方框中未创建var2
。
但是如果在本地框上运行命令替换,通过在$()
中包含整个SSH命令它确实有效,远程命令的输出将在局部变量中捕获:
var2=$(ssh user@host 'command')