请帮帮我,我哪里做错了?我正在通过我的Fastfile中的ruby做电报通知,并得到了这个问题:
[!] Syntax error in your Fastfile on line 175: Fastfile:175: syntax error, unexpected tIDENTIFIER, expecting end
210...ication/json' --data '{"chat_id": "123456789", "media": [{"t...
211... ^~~~~~~
212Fastfile:175: syntax error, unexpected tINTEGER, expecting end
213... --data '{"chat_id": "123456789", "media": [{"type": "photo"...
214... ^~~~~~~~~我的代码:
lane :detox do
images = Dir.glob("folder/*.png")
images.each do |image|
puts image
sh "curl --request POST --header 'Content-Type: application/json' --data '{"chat_id": "123456789", "media": [{"type": "photo", "media": "attach://image"}]' https://api.telegram.org/botToken/sendMediaGroup"
end发布于 2021-09-22 14:16:42
我在这里看到了一些错误的地方。首先,您应该转义sh后面字符串中的所有引号。否则,字符串将提前终止,您将遇到错误。
其次,您打开了两个do块:lane :detox do和images.each do |image|,但您只有一个end。
这应该是
lane :detox do
images = Dir.glob("folder/*.png")
images.each do |image|
puts image
sh "curl --request POST --header 'Content-Type: application/json' --data '{\"chat_id\": \"123456789\", \"media\": [{\"type\": \"photo\", \"media\": \"attach://image\"}]}' https://api.telegram.org/botToken/sendMediaGroup"
end
end发布于 2021-09-23 07:17:37
语法错误是由于在双引号字符串中使用未转义的双引号引起的:
str = "foo "bar" baz"
# ^^^^^ won't work您可以将"转义为\",但使用不需要转义的heredoc通常更容易:
sh <<-CMD
curl https://api.telegram.org/botToken/sendMediaGroup \
--request POST \
--header 'Content-Type: application/json' \
--data '{"chat_id": "123456789", "media": [{"type": "photo", "media": "attach://image"}]}'
CMD但是,您也可以将命令选项作为单独的参数传递给sh,而不是自己构建命令
sh(
'curl', 'https://api.telegram.org/botToken/sendMediaGroup',
'--request', 'POST',
'--header', 'Content-Type: application/json',
'--data', '{"chat_id": "123456789", "media": [{"type": "photo", "media": "attach://image"}]}'
)它还允许您动态地从Ruby散列创建JSON:
require 'json'
data = {
chat_id: "123456789",
media: [{ type: "photo", media: "attach://image" }]
}
sh(
'curl', 'https://api.telegram.org/botToken/sendMediaGroup',
'--request', 'POST',
'--header', 'Content-Type: application/json',
'--data', data.to_json
)这样做可以确保您的JSON始终有效。(句法上)
https://stackoverflow.com/questions/69284532
复制相似问题