我正在尝试通过 API 将一些数据推送到我的 Tiddlywiki,以便我可以创建一个新的tiddler。 我可以传递几乎所有数据,但如果值“text”内部有空格,则会破坏尝试传递多个 URL 的curl 命令。
这是实际的命令:
curl -X PUT -i "http://192.168.1.166:8080/recipes/default/tiddlers/$title" -H "X-Requested-With: TiddlyWiki" --data $(jq -nc --arg tags "$tag" --arg text "'${content}'" '{ $tags, $text }')
我首先尝试使用
$variables
,在括号内,甚至在多个"'"$var"'"
内,遵循其他问题。但他们中的大多数人很快推荐使用 jq,所以我尝试了一下。
我学会了如何使用 bash 的变量内容创建一些键,并且如果我通过管道传输所有这些内容,只有当我用其他字符替换空格时,我才能让它工作...我尝试了 %20 或刮掉空格 sed 没有成功。 (%20 是按字面意思替换的,所以没有帮助)
任何建议,我都会遵循您可以采取的任何其他路径。
编辑:
我尝试使用
--data-urlencode "text=${var}"
但它没有被填充,只有变量扩展是标题。其他的根本没表现出来。
API 信息: https://tiddlywiki.com/static/WebServer%2520API%253A%2520Put%2520Tiddler.html
我忘了提及我正在使用 zsh shell...
您需要引用命令替换的输出:
--data "$(jq ...)"
。如果没有这个,curl 会认为第一个后面的单词是要连接的单独 URL。您还应该从 --arg text "'${content}'"
中删除单引号,否则它们将被添加到文本本身中。