2014-12-24 179 views
0

比較我不能使用變量VAR2。這個腳本有什麼問題?無法使用變量在shell腳本

#!/bin/bash 

var1=$(---some shell cmd---) 
echo $var1 

read USER_ID 

ssh [email protected] ' 

var2=$(---some shell cmd---) 
echo $var2 
' 

if [ "$var1" -eq "$var2" ]; then  
    echo "success\n" 
fi 
+0

你爲什麼要在'echo $ var2'之後結束的ssh之後使用了單引號? – Skynet

+0

我想遠程訪問服務器。 var1將存儲來自本地機器的結果和來自遠程機器的var2存儲。我想比較結果並採取行動。 –

回答

1

您的var2只生活在遠程計算機上。您需要在自己的盒子上獲取該值。

var2=$(ssh [email protected] 'some shell command') 

編輯:只是爲了讓自己更清楚:

的SSH命令的簡介是:

ssh [email protected] [command] 

command完全運行在遠程計算機上,它需要從標準輸入本地終端通過SSH並通過SSH將其stdout和stderr打印到本地終端。

ssh [email protected] 'var2=$(command)' 

情況下的var2變量在遠程計算機上創建和它捕獲也遠程機器上的command的標準輸出。本地盒子上沒有創建var2

但是,如果你在$()運行命令替換上的本地盒,包括整個SSH命令它不工作,遠程命令的輸出是在局部變量捕獲:

var2=$(ssh [email protected] 'command') 
+0

我收到此錯誤::: E000002:無法打開文件'/ svn/repos/format':沒有這樣的文件或目錄 test.sh:33:[:非法數字: –

+0

您是否在分配時收到它到var2? – SzG

+0

是的,原因是變量的範圍正在改變。 –