当前位置: 首页 > 面试题库 >

如何使用带空格的字符串创建os.exec Command结构

秦宜修
2023-03-14
问题内容

我希望我的方法接收以字符串形式执行的命令。如果输入字符串中包含空格,如何将其拆分为os.exec的cmd,args?

文档说创建我的Exec.Cmd结构像

cmd := exec.Command("tr", "a-z", "A-Z")

这工作正常:

a := string("ifconfig")
cmd := exec.Command(a)
output, err := cmd.CombinedOutput()
fmt.Println(output) // prints ifconfig output

这将失败:

a := string("ifconfig -a")
cmd := exec.Command(a)
output, err := cmd.CombinedOutput()
fmt.Println(output) // 'ifconfig -a' not found

我尝试了strings.Split(a),但收到一条错误消息:不能在exec.Command的参数中使用(type [] string)作为类型string


问题答案:

请检出:https :
//golang.org/pkg/os/exec/#example_Cmd_CombinedOutput

您的代码失败,因为 exec.Command 要求将命令参数与实际 命令名分 隔开。

strings.Split
签名(https://golang.org/pkg/strings/#Split):

func Split(s, sep string) []string

您尝试实现的目标:

command := strings.Split("ifconfig -a", " ")
if len(command) < 2 {
    // TODO: handle error
}
cmd := exec.Command(command[0], command[1:]...)
stdoutStderr, err := cmd.CombinedOutput()
if err != nil {
    // TODO: handle error more gracefully
    log.Fatal(err)
}
// do something with output
fmt.Printf("%s\n", stdoutStderr)


 类似资料:
  • 问题内容: 对于JUnit测试,我需要一个由多行组成的String。但是我得到的只是一个单行字符串。我尝试了以下方法: 我也尝试了。System.getProperty(“ line.separator”)也不起作用。它产生一个in字符串,没有回车符。那么我该如何解决呢? 问题答案: 感谢您的回答。我错过了我的数据存储在传递给测试方法的。错误是我将字符串放入ArrayList的第一个元素中。这就是

  • 问题内容: 我需要创建一个可以将int,long,double等类型转换为字符串的格式的字符串。使用Obj-C,我可以通过以下方式进行操作。 怎么做迅速? 问题答案: 我认为这可以帮助您: 结果示例:

  • 我正在创建一个战舰游戏应用程序来学习OOP,Java。我想显示一个“空海”供玩家参考放置他们的舰队。下面是我的游戏板课的开始: 我把这叫做主要的:

  • 问题内容: 我想用空格填充字符串。我知道以下内容适用于零: 但是,当我想要这个时我该怎么办?: 当然,我可以测量字符串的长度并这样做,但是我想用最短的方法。 问题答案: 你可以使用 返回长度为的左对齐字符串。使用指定的fillchar填充(默认为空格)。如果小于,则返回原始字符串。

  • 我想使用字符串创建一个JSON对象。 示例:JSON 为了创建上面的JSON,我使用了这个。 我想知道如何创建一个包含JSON数组的JSON。 下面是示例JSON。 多谢了。

  • 我正在尝试从Java文本文件中读取一行。我得到一个异常。 这是文本文件中的行: 我需要用“#”拆分,这部分起作用了。当我试图访问位置1处的元素时,Java抛出异常。我想这是因为名字和姓氏之间有空格,因为当我显示的是“Chiquita”,而不是“Chiquita Sanford”。 当第一个数组索引中有多个单词时,Java对拆分是否有一些限制。