【问题标题】:How to read external variables如何读取外部变量
【发布时间】:2021-01-12 07:32:49
【问题描述】:

我试图读取--configFile=""作为外部参数发送的一个变量,但我总是得到一个找不到错误,即使我通过了绝对路径

变量:

var (
    c                          Config
    conf                       = c.getConf()
    app                        = kingpin.New("exporter", "Exporter for Prometheus.")
    configFile                 = app.Flag("configFile", "Configuration file destination (/etc/exporter/config.yaml)").Default("/etc/exporter/config.yaml").String()
)

配置:

func (c *Config) getConf() *Config {

    yamlFile, err := ioutil.ReadFile(string(*configFile))
    if err != nil {
        log.Errorf("yamlFile.Get err   #%v ", err)
    }
    err = yaml.Unmarshal(yamlFile, c)
    if err != nil {
        log.Errorf("Unmarshal: %v", err)
    }
    return c
}

命令/输出:

server:/etc/exporter # ./exporter --configFile="/etc/exporter/config.yaml"
ERRO[0000] yamlFile.Get err   #open : no such file or directory

ls -ltr:

total 14152
-rw------- 1 root root     1334 Sep 25 20:47 config.yaml
-rwxrwxr-x 1 root root 14466568 Sep 25 22:03 exporter

【问题讨论】:

    标签: string go var


    【解决方案1】:

    在此处替换代码https://github.com/rafal-szypulka/itm_exporter/blob/master/main.go#L51

    与:

    conf *Config
    

    在此处替换代码https://github.com/rafal-szypulka/itm_exporter/blob/master/main.go#L354

    与:

    p := kingpin.MustParse(app.Parse(os.Args[1:]))
    conf = c.getConf()
    switch p {
    

    【讨论】:

    • 但是当我添加静态变量时,例如:yaml File, err := ioutil.ReadFile("/etc/exporter/config.yaml")。脚本执行成功!
    • 你的问题是主销没有解析。你必须打电话给kingpin.MustParse
    • 你能举个例子吗?
    • 添加说明。
    • 可能是golang-book.com,但我没看过。
    猜你喜欢
    • 2020-05-12
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多