为了账号安全,请及时绑定邮箱和手机立即绑定

如何在golang中添加带引号和斜杠的字符串

如何在golang中添加带引号和斜杠的字符串

Go
holdtom 2022-10-17 10:11:44
我会分享一个例子我想要 golang 字符串下面的行 curl -u admin:admin -H 'Accept: application/yang-data+json' -s http://<ip>/restconf/data/ -v我写的代码:命令:="curl -u admin:admin -H 'Accept: application/yang-data+json' -s http://" + ip_string + "/restconf/data/ -v"err:行尾出现意外字符串。
查看完整描述

1 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

Line 末尾的意外字符串。


您可以使用fmt.Sprintf格式化字符串,这样您就不必手动将其缝合在一起。我自己觉得这更容易阅读和写作:


fmt.Sprintf("curl -u admin:admin -H 'Accept: application/yang-data+json' -s http://%s/restconf/data/ -v", ip_string)

好像您正在尝试创建一个 shell 命令来调用 Curl。比试图逃避curlshell 的参数更好的是直接调用curl。这样,您可以使用 Go 分隔参数,而不必担心 shell 引用:


cmd := exec.Command("curl", 

   "-u", "admin:admin",

   "-H", "Accept: application/yang-data+json",  

   "-s", 

   fmt.Sprintf("http://%s/restconf/data/", ip_string), 

   "-v",

)

但是,如果我是你,我会使用https://pkg.go.dev/net/http提出请求并os/exec完全避免。性能和效率会更好,处理响应和任何错误条件将比通过curl尝试解析输出和处理错误代码更容易。


req, err := http.NewRequest("GET", fmt.Sprintf("http://%s", source_ip), nil)

// handle err

req.Header.Add("Accept", "application/yang-data+json")

req.SetBasicAuth("admin","admin")

resp, err := client.Do(req)

// handle err!

defer resp.Body.Close()

body, err := io.ReadAll(resp.Body)

// handle err!


查看完整回答
反对 回复 2022-10-17
  • 1 回答
  • 0 关注
  • 168 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信