无法在shell脚本中使用变量进行比较

时间:2014-12-24 11:22:31

标签: linux shell ubuntu-14.04

我无法使用变量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

1 个答案:

答案 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')