À l'intérieur des guillemets simples, le Shell n'étend rien. Placez-les plutôt à l'intérieur de guillemets doubles :
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"'."}'
Examinons comment cela fonctionne en regardant :
$ TR_TORRENT_NAME=MyTorrent
$ echo '{"type": "note", "title": "'"$TR_TORRENT_NAME"'", "body": "'"$TR_TORRENT_NAME completed"'."}'
{"type": "note", "title": "MyTorrent", "body": "MyTorrent completed."}
Lorsque la variable Shell apparaît, elle est toujours entre guillemets. Par conséquent, elle est correctement développée.
Une citation comme celle-ci est un peu subtile. Nous avons des chaînes de caractères entre guillemets simples qui contiennent des guillemets doubles en tant que caractères et qui se trouvent à côté de chaînes de caractères entre guillemets doubles. Pour mieux comprendre, prenons ce fragment comme exemple :
"'"$TR_TORRENT_NAME"'"
Prendre chaque personnage à tour de rôle :
-
"
est un caractère double guillemet littéral qui se trouve à l'intérieur d'une chaîne de caractères simple guillemet. (Par souci de brièveté, le début de cette chaîne n'est pas représenté dans ce fragment).
-
'
ferme une chaîne de caractères entre guillemets.
-
"
ouvre une chaîne de caractères entre guillemets.
-
$TR_TORRENT_NAME
est une variable Shell qui est développée entre guillemets.
-
"
ferme la chaîne de caractères entre guillemets.
-
'
ouvre une nouvelle chaîne de caractères entre guillemets.
-
"
place un caractère entre guillemets à l'intérieur de la chaîne de caractères entre guillemets.