Bash: переменная в одинарных кавычках - PullRequest
4 голосов
/ 10 ноября 2011

Сначала взгляните на этот вопрос: Bash или GoogleCL: новая строка в строковом параметре

Я хочу добавить переменную $ {date} в «сводку» сейчас:

google youtube post ~/videos/cat-falls-down-stairs.avi Comedy \
    --tags 'currency of the internet' \
    --summary $'Today is ${date}. Poor whiskers takes a tumble.\nShe'\''s fine, though, don'\''t worry.'

но переменная не будет расширяться внутри одинарных кавычек в bash.

Возможно ли это сделать?

Примечание: GoogleCL - это командапрограмма написана на python.Я на Ubuntu 10.10 с Python 2.6.

Ответы [ 3 ]

14 голосов
/ 10 ноября 2011

Вместо того, чтобы пытаться раскрыть переменную внутри строки в одинарных кавычках, типичным решением является объединение строк в одинарных и двойных кавычках.Другими словами:

'Today is'"${date}"'. Poor' ...
4 голосов
/ 11 ноября 2011

Я добавлю еще одну опцию в список: определите переменную как новую строку, а затем используйте ее в двойных кавычках.

nl=$'\n'
...
   --summary "Today is ${date}. Poor whiskers takes a tumble.${nl}She's fine, though, don't worry."
1 голос
/ 10 ноября 2011

Переменные не раскрываются в одинарных кавычках. Либо вы можете делать то, что предлагает Уильям, либо вы можете переписать строку в двойные кавычки, что расширит переменную, как вы хотите.

"Today is ${date}. Poor whiskers takes a tumble.\nShe's fine, though, don't worry."

Бонус: при этом вам не нужно будет избегать одиночных кавычек.

Теперь я прочитал ссылку, и вы сказали, что \ n не будет расширяться. Обойти это можно примерно так:

--summary $(echo -e "Today is...")

Немного грубо использовать для этого подоболочку, но это избавит вас от обратной косой черты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...