如何读取带有args的文本文件的猫?

问题描述 投票:-3回答:1

我正在开发一个cli插件,并希望通过xargs作为参数传递yaml配置。

所以电话应该是这样的:

cat config.yaml | xargs scale-up

现在来了困难的部分。我知道我可以得到os.Args,但有些东西不是我要找的东西。

if len(args) > 1 {
    log.Infof("%v", os.Args)
}

结果是

[/Users/me/.cf/plugins/Scaler 63386 scale spaces: - name: dev apps: - name: app min: i: 1 max: i: 4]

这显然是正确的,因为它将我的文件切成碎片。

如何正确读取文件?

go arguments command-line-arguments xargs
1个回答
0
投票

你可以在stdin中读取linux管道的输出

app.go

package main

import (
    "bufio"
    "io"
    "log"
    "os"
    "fmt"
)

func main() {
    reader := bufio.NewReader(os.Stdin)

    var txt string
    for {
        data := make([]byte, 100) 
        _, err := reader.Read(data)
        txt +=string(data)
        if err == io.EOF {
            break
        } else if err != nil {
            log.Fatalf("Err: %s", err)
        }
    }
    fmt.Printf("Input: %s\n", txt)
}



  cat config.yaml | ./app

我想这就是你想要做的

© www.soinside.com 2019 - 2024. All rights reserved.