登录
首页 >  Golang >  Go问答

在 Go 中获取 `/etc/environment`

来源:stackoverflow

时间:2024-04-11 20:30:33 322浏览 收藏

对于一个Golang开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《在 Go 中获取 `/etc/environment`》,主要介绍了,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!

问题内容

我正在尝试使用 golang 获取 /etc/environment 文件。 我解析了文件的每一行并使用了以下代码:

var myExp = regexp.MustCompile(`(?P.*)=(?P.*)`) 从文件中获取 key=value 。但某些值中包含 = 并且上述正则表达式失败。

例如,环境中的其中一行将如下所示: CONFIG_BASE64=SDFSWESC1= 我希望它由第一次出现的 = 分隔。即,键是CONFIG_BASE64,值是SDFSWESC1=


解决方案


strings.splitn() 有什么问题吗?使用正则表达式似乎有点过分了。

package main

import (
    "bufio"
    "fmt"
    "os"
    "strings"
)

func main() {
    file, err := os.Open("/etc/environment")
    if err != nil {
        panic(err)
    }

    scanner := bufio.NewScanner(file)
    for scanner.Scan() {
        // MAGIC
        split := strings.SplitN(scanner.Text(), "=", 2)
        // Line didn't have an = in it
        if len(split) < 2 {
            continue
        }
        // Skip comments, pretty naive though
        if strings.HasPrefix(split[0], "#") {
            continue
        }
        fmt.Printf("key %s value %s\n", split[0], split[1])
    }
    if err := scanner.Err(); err != nil {
        fmt.Fprintln(os.Stderr, "reading standard input:", err)
    }
}

好了,本文到此结束,带大家了解了《在 Go 中获取 `/etc/environment`》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>