尝试让 Transmission 在下载完成时通知。
这有效:
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
不是该变量的实际内容。
我需要逃避一些引言或者别的什么吗?
答案1
在单引号内,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 变量。"
关闭双引号字符串。'
打开一个新的单引号字符串。"
将双引号字符放置在单引号字符串内。
答案2
要在 bash 行 curl 中包含环境变量,并且变量内容周围没有引号,这对我来说是有效的:
--header 'PRIVATE-TOKEN: '"$PRIVATE_TOKEN"''
或者使用首先描述的在主体字段周围不带引号的场景:
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"'.}'
答案3
将引号放在末尾并用双引号括住环境变量是最简单的方法:
初始化并导出变量-
export TR_TORRENT_NAME="foo"
导入变量-
echo "{"type": "note", "title": ""$TR_TORRENT_NAME"", "body": ""$TR_TORRENT_NAME"" "completed."}"
响应看起来是这样的-
{type: note, title: foo, body: foo completed.}