2014-12-24 3 views
0

변수 var2를 사용할 수 없습니다. 이 스크립트에서 잘못된 점은 무엇입니까?쉘 스크립트에서 비교할 변수를 사용할 수 없습니다.

#!/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를 통해 로컬 터미널에 연결하고 stdout 및 stderr를 SSH를 통해 로컬 터미널에 인쇄합니다.

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

예, 변수의 범위가 변경되는 이유가 변경되었습니다. –

관련 문제