首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拼音语法错误,意外的tIDENTIFIER,应为end

拼音语法错误,意外的tIDENTIFIER,应为end
EN

Stack Overflow用户
提问于 2021-09-22 12:46:08
回答 2查看 154关注 0票数 0

请帮帮我,我哪里做错了?我正在通过我的Fastfile中的ruby做电报通知,并得到了这个问题:

代码语言:javascript
复制
[!] 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...                      ^~~~~~~~~

我的代码:

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-09-22 14:16:42

我在这里看到了一些错误的地方。首先,您应该转义sh后面字符串中的所有引号。否则,字符串将提前终止,您将遇到错误。

其次,您打开了两个do块:lane :detox doimages.each do |image|,但您只有一个end

这应该是

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2021-09-23 07:17:37

语法错误是由于在双引号字符串中使用未转义的双引号引起的:

代码语言:javascript
复制
str = "foo "bar" baz"
#          ^^^^^ won't work

您可以将"转义为\",但使用不需要转义的heredoc通常更容易:

代码语言:javascript
复制
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,而不是自己构建命令

代码语言:javascript
复制
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:

代码语言:javascript
复制
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始终有效。(句法上)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69284532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档