2016-07-15 2 views
0

Я пытаюсь выполнить команду cURL в сценарии bash для POST для URI. Команда требует, чтобы один из аргументов был окружен двойными и одинарными кавычками, т. Е. '"jsimmons"' В моем скрипте, однако, этот аргумент является переменной, поэтому команда продолжает терпеть неудачу, которая, я считаю, связана с тем, что переменная делает какое-то странное расширение, а команда теряет кавычки необходимо.Расширение переменной bash в нескольких кавычках?

Для моей текущей попытки, которая не работает, аргумент выглядит так: '""$watcher""', поскольку я пытаюсь развернуть переменную и поместить эту строку в двойные и одинарные кавычки.

Как я могу правильно расширить свою переменную, чтобы выполнить требования команды?

+2

Atleast вставить соответствующую часть кода и ошибки вы столкнулись – Fazlin

+1

XY Проблема: пытаетесь ли вы JSON-кодировать строку 'jsimmons'? – chepner

+0

Если внешние цитаты являются одинарными кавычками, текущая оболочка не будет расширять ссылку на переменную внутри строки. В одной кавычки нет escape-символов. Следующая одиночная цитата безоговорочно завершает строку, независимо от обратных косых черт или любых других символов «escape». –

ответ

2

Если у вас есть двойные кавычки вокруг всей вашей команды, вы можете вставить одинарные кавычки без каких-либо проблем, но вам нужно избежать двойных кавычек.

Например:

$ watcher=jsimmons 
$ echo "'\"$watcher\"'" 
'"jsimmons"' 
+2

Я подозреваю, что одиночные кавычки на самом деле не нужны, за исключением того, что двойные кавычки передаются буквально. – chepner

0

Вы можете избежать окружающих ' с и " с с \

\'\"$watcher\"\'

+0

Что вы ожидаете от '\ ''? –

+0

Если они не привязаны, переменная '$ watcher' не будет расширяться, и это приведет к' \ '$ watcher \ "'. Также '\' 'не расширяется, поскольку« В одинарных кавычках каждый специальный символ, кроме '' ', интерпретируется буквально», http://tldp.org/LDP/abs/html/quotingvar.html – Kyriakos

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