2016-03-18 5 views
1

Используя osascript, я могу сказать приложение терминала открыть ssh-соединение в отдельном окне терминала, однако я сталкиваюсь с ошибками при попытке передать переменные bash в скрипте.Ошибки при передаче переменной bash в osascript

Этот скрипт работает просто отлично:

osascript -e 'tell app "Terminal" 
    do script "ssh [email protected] -p port -L 9999:localhost:80 -i keyfile" 
end tell' 
...more commands... 

Но запустить сценарий, как этот ...

read -p "Port: " prt 
read -p "Localhost port: " lhprt 
osascript -e 'tell app "Terminal" 
      do script "ssh [email protected] -p \"$prt\" -L \"$lhprt\":localhost:80 -i keyfile" 
     end tell' 
...more commands... 

Он не пропускает переменные, то есть команда, переданная в новом терминале Окно:

ssh [email protected] -p "$prt" 

Как я могу отформатировать это, чтобы мои байш-переменные получали питание?

+0

Возможный дубликат [Разница между одиночными и двойными кавычками в bash] (http://stackoverflow.com/questions/6697753/difference-between-single-and-double-quotes-in-bash) – miken32

ответ

-1

Просто инвертировать тип цитаты Использование одиночной кавычки препятствует оболочки, чтобы расширить свои параметры

Edit: Вы можете закрыть строку только вокруг переменных тоже. I.e. 'это' $ variable 'в строке.

+0

Можете ли вы дать пример? У меня несколько вложенных котировок, поэтому я не уверен, что переключиться. Прямо сейчас, переключая их, я получаю 'синтаксическая ошибка: ожидаемое выражение, свойство или ключевая форма и т. Д., Но найден неизвестный токен. (-2741)» – jebrii

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