如何加串的报价和斜线在go语言

0

的问题

我会分享的一个示例

我想线以下go语言的字符串 curl -u admin:admin -H 'Accept: application/yang-data+json' -s http://<ip>/restconf/data/ -v

码我写道:

cmd:= "curl -u admin:admin -H 'Accept: application/yang-data+json' -s http://" + ip_string + "/restconf/data/ -v"

错误: 意想不到的串的底线。

go
2021-11-23 16:07:26
1

最好的答案

1

意想不到的串的底线。

你可以使用 fmt.Sprintf 格式化的一串这样,你没有缝在一起。 我找到这种更易于阅读和写,自己说:

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

看起来像你在努力创造一个命令要援引的卷曲。 比试图逃避你 curl 参数的外壳,是援引 curl 直接。 这种方式可以使用转到单独的论点,而不必担心壳引用:

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!
2021-11-23 16:26:50

谢谢你的回复。 但是,我们的标志-u-s-v如何包括这
Pulkit Kundra

{"错误":"分析\"-s http://<ip>/restconf/数据/v\":第一路段URL不能包含的结肠","处理":"后/collect","jobID":"Collect-11-24-2021_051320","level":"error","method":"initiateConfdCollection","msg":"Getrunningconfig:无法创建的请求:分析\"-s http://<ip>/restconf/数据/v\":第一路段URL不能包含的结肠","时间":"2021-11-24T05:13:21Z"}{"处理":"后/collect","jobID":"Collect-11-24-2021_051320","level":"error","method":"initiateConfdCollection","msg":"未能获得数据从名字空间:<ip>","时间":"2021-11-24T05:13:21Z"}
Pulkit Kundra

有了上述错误,而使用 包.去。dev/net/http
Pulkit Kundra

如果你想去的 net/http 方法和你得到错误,最好贴,作为一个新的问题。 看起来我有 -surl, -v 所有在同一串。
Daniel Farrell

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................