2014-12-24 1 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

почему ты используются одинарные кавычки после ssh, которые заканчиваются после 'echo $ var2'? – Skynet

+0

Я хочу получить доступ к серверу удаленно. var1 сохранит результат из локальных машин и хранилищ var2 с удаленной машины. Я хочу сравнить результаты и действовать на них. –

ответ

1

Ваш var2 живет только на удаленном компьютере. Вам нужно зафиксировать значение в своей собственной коробке.

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

EDIT: просто сделать себя более ясным:

Конспект команды 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

Получаете ли вы его при назначении to var2? – SzG

+0

Да, причина в изменении переменных меняется. –

Смежные вопросы