Dentro de aspas simples, o shell não expande nada. Coloque-os entre aspas duplas:
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"'."}'
Vamos examinar como isso funciona analisando:
$ TR_TORRENT_NAME=MyTorrent
$ echo '{"type": "note", "title": "'"$TR_TORRENT_NAME"'", "body": "'"$TR_TORRENT_NAME completed"'."}'
{"type": "note", "title": "MyTorrent", "body": "MyTorrent completed."}
Quando a variável shell aparece, ela está sempre entre aspas duplas. Consequentemente, é adequadamente expandido.
Citar assim é um pouco sutil. Temos strings com aspas simples que contêm aspas duplas como caracteres e estão ao lado de strings com aspas duplas. Para entender melhor, vamos pegar este fragmento como um exemplo:
"'"$TR_TORRENT_NAME"'"
Tomando cada caractere por vez:
-
"
é um caractere de aspas duplas literal que está dentro de uma cadeia entre aspas simples. (Por questão de brevidade, o início dessa string não é mostrado neste fragmento.) -
'
fecha uma string entre aspas simples. -
"
abre uma sequência de aspas duplas. -
$TR_TORRENT_NAME
é uma variável de shell que é expandida entre aspas duplas. -
"
fecha a sequência de aspas duplas. -
'
abre uma nova sequência de aspas simples. -
"
coloca um caractere de aspas duplas dentro da string entre aspas simples.