In einfachen Anführungszeichen erweitert die Shell nichts. Setzen Sie sie stattdessen in doppelte Anführungszeichen:
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"'."}'
Schauen wir uns an, wie das funktioniert:
$ TR_TORRENT_NAME=MyTorrent
$ echo '{"type": "note", "title": "'"$TR_TORRENT_NAME"'", "body": "'"$TR_TORRENT_NAME completed"'."}'
{"type": "note", "title": "MyTorrent", "body": "MyTorrent completed."}
Wenn die Shell-Variable angezeigt wird, steht sie immer in doppelten Anführungszeichen. Folglich wird es richtig erweitert.
So zu zitieren ist etwas subtil. Wir haben Strings in einfachen Anführungszeichen, die doppelte Anführungszeichen als Zeichen enthalten und sich neben Strings in doppelten Anführungszeichen befinden. Um dies besser zu verstehen, nehmen wir dieses Fragment als Beispiel:
"'"$TR_TORRENT_NAME"'"
Nehmen Sie jeden Charakter der Reihe nach:
"
ist ein wörtliches Anführungszeichen, das sich in einer Zeichenfolge in einfachen Anführungszeichen befindet. (Der Kürze halber wird der Anfang dieser Zeichenfolge in diesem Fragment nicht angezeigt.)
'
Schließt eine Zeichenfolge in Anführungszeichen.
"
öffnet eine Zeichenfolge in doppelten Anführungszeichen.
$TR_TORRENT_NAME
ist eine Shell-Variable, die in doppelte Anführungszeichen gesetzt wird.
"
schließt die Zeichenfolge in doppelten Anführungszeichen.
'
öffnet eine neue Zeichenfolge in Anführungszeichen.
"
Fügt ein doppeltes Anführungszeichen in die Zeichenfolge mit einfachen Anführungszeichen ein.
TR_TORRENT_NAME="A * B"
Sie aus, was passiert.So fügen Sie eine Umgebungsvariable in eine Bash-Line-Locke ohne Anführungszeichen um den Variableninhalt ein:
Oder verwenden Sie das zuerst beschriebene Szenario ohne Anführungszeichen um das Feld body:
quelle