比較我不能使用變量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
比較我不能使用變量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
您的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')
我收到此錯誤::: E000002:無法打開文件'/ svn/repos/format':沒有這樣的文件或目錄 test.sh:33:[:非法數字: –
您是否在分配時收到它到var2? – SzG
是的,原因是變量的範圍正在改變。 –
你爲什麼要在'echo $ var2'之後結束的ssh之後使用了單引號? – Skynet
我想遠程訪問服務器。 var1將存儲來自本地機器的結果和來自遠程機器的var2存儲。我想比較結果並採取行動。 –