在单引号内,shell不会扩展任何内容。将它们放在双引号中:
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."}
当shell变量出现时,它总是在双引号内。因此,它被适当地扩展了。
这样的报价有点微妙。我们有单引号字符串,其中包含双引号作为字符,并且在双引号字符串旁边。为了更好地理解这一点,让我们以以下片段为例:
"'"$TR_TORRENT_NAME"'"
依次轮流使用每个字符:
"
是单引号字符串内的文字双引号字符。(为简便起见,此片段中未显示此字符串的开头。)
'
关闭单引号字符串。
"
打开双引号字符串。
$TR_TORRENT_NAME
是在双引号内扩展的shell变量。
"
关闭双引号字符串。
'
打开一个新的单引号字符串。
"
在单引号字符串内放置双引号字符。