2015-03-11 2 views
2

Я хочу, чтобы grep через несколько файлов для строки. В этом примере я хочу вычленить информацию «тест 1234»Передача цитируемых переменных в удаленной команде ssh

#!/bin/bash 

variable="test 1234" 
ssh [email protected] "grep "$variable" /path/*" 

Этот скрипт не работает, потому что тест 1234 передается на сервер вместо «тест 1234»

Как я могу это исправить?

ответ

2

Вы должны избежать кавычки $variable в вашей команде:

ssh [email protected] "grep \"$variable\" /path/*" 

Как можно заметить, переменная расширяется, но поскольку кавычки не экранируются, команда ищет текст test в файлы 1234и/path/*

+1

или альтернативно: 'SSH корень @ сервер "Grep 'переменная $'/путь/*"': уровень локального сценария '" 'убедитесь, что' $ variable' заменяется его информации локального значение сценария, а удаленный grep получает это значение в пределах одной кавычки. –

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