{ "@context": "https://schema.org", "@type": "Article", "headline": "如何在 bash 命令中传递用户输入的值?", "datePublished": "2024-02-08T15:09:26", "dateModified": "2024-02-08T15:09:26", "description": "一分耕耘,一分收获!既然打开了这篇文章《如何在 bash 命令中传递用户输入的值?》,就坚持看下去吧!文中内容包含等等知识点...希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑,也欢迎大佬或者新人朋友们多留言评论,多给建议!谢谢!问题内容fmt.Print(Enter valid nbd: ) reader := bufio.NewReader(os.Stdin) input, err := reader.ReadString('\n') if err != nil ", "publisher": { "@type": "Organization", "name": "Golang学习网", "url": "https://m.17golang.com" }, "mainEntityOfPage": { "@type": "WebPage", "@id": "https://m.17golang.com/article/94739.html" } }
登录
首页 >  Golang >  Go问答

如何在 bash 命令中传递用户输入的值?

来源:stackoverflow

时间:2024-02-08 15:09:26 354浏览 收藏

一分耕耘,一分收获!既然打开了这篇文章《如何在 bash 命令中传递用户输入的值?》,就坚持看下去吧!文中内容包含等等知识点...希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑,也欢迎大佬或者新人朋友们多留言评论,多给建议!谢谢!

问题内容

fmt.Print("Enter valid nbd: ")
    reader := bufio.NewReader(os.Stdin)

    input, err := reader.ReadString('\n')
    if err != nil {
            fmt.Println("An error occured while reading input. Please try again", err)
            return
    }

    input = strings.TrimSuffix(input, "\n")
    cmd = exec.Command("/bin/bash", "-c", "qemu-nbd -c /dev/", input, "/tmp/var/lib/vz/images/201/vm-201-disk-0.qcow2")
    cmd.Run()

    cmd = exec.Command("/bin/bash", "-c", "mount /dev/", input, "p1 /mnt")
    cmd.Run()

我想将用户输入(例如 nbd7)传递给我提到的 exec.command。

input = strings.trimsuffix(input, "\n")

mount := qemu-nbd -c /dev/input /tmp/centos-7.7.1908-x64.qcow2

cmd = exec.command("/bin/bash", "-c", mount, "echo stdout; echo 1>&2 stderr")

我修改了我的代码。有什么正确的方法可以将我的输入值传递到安装变量的值中吗? /dev/input 绝对不起作用。


正确答案


这是可能的。代码正确,您可以使用 cmd.string 打印执行的命令。执行过程中很可能出现错误。

我建议使用 cmd.output()cmd.stderrpipe() 进行调试。

// output runs the command and returns its standard output.
// any returned error will usually be of type *exiterror.
// if c.stderr was nil, output populates exiterror.stderr.

谢谢大家,这样代码就可以正常运行了。

input = strings.TrimSuffix(input, "\n")

    mount := fmt.Sprintf(`qemu-nbd -c /dev/%s /tmp/ios.qcow2`, input)
    cmd = exec.Command("bash", "-c", mount)
    cmd.Run()

    mount1 := fmt.Sprintf(`mount /dev/%sp1 /mnt`, input)
    cmd = exec.Command("bash", "-c", mount1)
    cmd.Run()

好了,本文到此结束,带大家了解了《如何在 bash 命令中传递用户输入的值?》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

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