シングルクォート内では、シェルは何も展開しません。代わりに二重引用符で囲みます:
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
二重引用符で囲まれたシェル変数です。
"
二重引用符で囲まれた文字列を閉じます。
'
新しい一重引用符で囲まれた文字列を開きます。
"
一重引用符で囲まれた文字列内に二重引用符を配置します。