À l'intérieur des guillemets simples, le shell ne développe rien. Placez-les plutôt entre guillemets:
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 se trouve toujours entre guillemets doubles. Par conséquent, il est correctement développé.
Citer comme ça est un peu subtil. Nous avons des chaînes entre guillemets simples qui contiennent des guillemets doubles en tant que caractères et sont à côté des chaînes entre guillemets doubles. Pour mieux comprendre cela, prenons ce fragment comme exemple:
"'"$TR_TORRENT_NAME"'"
Prendre chaque personnage à tour de rôle:
"
est un caractère entre guillemets littéral qui se trouve à l'intérieur d'une chaîne entre guillemets simples. (Par souci de concision, le début de cette chaîne n'est pas affiché dans ce fragment.)
'
ferme une chaîne entre guillemets simples.
"
ouvre une chaîne entre guillemets doubles.
$TR_TORRENT_NAME
est une variable shell qui est développée entre guillemets doubles.
"
ferme la chaîne entre guillemets doubles.
'
ouvre une nouvelle chaîne entre guillemets simples.
"
place un caractère entre guillemets dans la chaîne entre guillemets simples.
TR_TORRENT_NAME="A * B"
voir ce qui se passe.Pour inclure une variable d'environnement dans une boucle de ligne bash sans guillemets autour du contenu de la variable, cela a fonctionné pour moi:
Ou en utilisant le scénario décrit pour la première fois sans guillemets autour du champ corporel:
la source