Внутри одинарных кавычек оболочка ничего не расширяет. Поместите их в двойные кавычки:
curl -u <my-api-token>: \
-X POST https://api.pushbullet.com/v2/pushes \
--header 'Content-Type: application/json' \
--data-binary '{"type": "note", "title": "'"$TR_TORRENT_NAME"'", \
"body": "'"$TR_TORRENT_NAME completed"'."}'
Давайте рассмотрим, как это работает, посмотрев на:
$ TR_TORRENT_NAME=MyTorrent
$ echo '{"type": "note", "title": "'"$TR_TORRENT_NAME"'", "body": "'"$TR_TORRENT_NAME completed"'."}'
{"type": "note", "title": "MyTorrent", "body": "MyTorrent completed."}
Когда появляется переменная оболочки, она всегда находится в двойных кавычках. Следовательно, он должным образом расширен.
Цитировать, как это немного тонко. У нас есть строки в одинарных кавычках, которые содержат двойные кавычки в виде символов и находятся рядом со строками в двойных кавычках. Чтобы лучше это понять, давайте возьмем этот фрагмент в качестве примера:
"'"$TR_TORRENT_NAME"'"
Взять каждого персонажа по очереди:
"
является литеральным символом двойной кавычки, который находится внутри строки в одинарных кавычках. (Для краткости начало этой строки не показано в этом фрагменте.)
'
закрывает строку в одинарных кавычках
"
открывает строку в двойных кавычках.
$TR_TORRENT_NAME
переменная оболочки, которая раскрывается в двойных кавычках
"
закрывает строку в двойных кавычках.
'
открывает новую строку в одинарных кавычках.
"
помещает символ двойной кавычки внутри строки в одинарных кавычках.
TR_TORRENT_NAME="A * B"
и посмотрите, что происходит.Чтобы включить переменную окружения в скручивание строки bash без кавычек вокруг содержимого переменной, это сработало для меня:
Или используя сценарий, который был впервые описан без кавычек вокруг поля тела:
источник