猿问

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

我会分享一个例子

我想要 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:行尾出现意外字符串。


holdtom
浏览 169回答 1
1回答

一只斗牛犬

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",&nbsp;&nbsp; &nbsp;"-u", "admin:admin",&nbsp; &nbsp;"-H", "Accept: application/yang-data+json",&nbsp;&nbsp;&nbsp; &nbsp;"-s",&nbsp;&nbsp; &nbsp;fmt.Sprintf("http://%s/restconf/data/", ip_string),&nbsp;&nbsp; &nbsp;"-v",)但是,如果我是你,我会使用https://pkg.go.dev/net/http提出请求并os/exec完全避免。性能和效率会更好,处理响应和任何错误条件将比通过curl尝试解析输出和处理错误代码更容易。req, err := http.NewRequest("GET", fmt.Sprintf("http://%s", source_ip), nil)// handle errreq.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!
随时随地看视频慕课网APP

相关分类

Go
我要回答