公司有块内容是go语言编写的,go这块不是很懂想问下底下这个exec.Command方法是去linux里面执行指定的shell语句,那实际执行的时候是在linux的哪个目录执行的呢
/usr/bin
package main
import (
"fmt"
"os/exec"
)
func checkError(err error){
if err != nil{
panic(err)
}
}
func main(){
cmd := exec.Command("./../other/other","hello","world")
data,err := cmd.Output()
checkError(err)
fmt.Println(string(data))
}
根据参考资料,exec.Command()
方法是用来在Linux系统中执行特定的shell命令。当命令执行时会在当前工作目录下运行,并输出结果。因此,如果想要控制命令执行时所在的目录,需要在命令中添加对应的工作目录参数。
例如,如果想要在 /home/user
目录下执行命令,可以在命令中添加 -C
参数,如下所示:
cmd := exec.Command("ls", "-al", "-C", "/home/user")
另外,也可以在 exec.Command()
方法执行之前,通过 os.Chdir()
方法先改变当前工作目录,然后再执行命令:
err := os.Chdir("/home/user")
if err != nil {
// 处理错误
}
cmd := exec.Command("ls", "-al")
这样执行的命令会在 /home/user
目录下运行。需要注意的是,如果命令中使用了相对路径,当前工作目录的改变也会影响到命令中相对路径的解析。
如果想要获取命令执行的结果,同样可以使用 CombinedOutput()
方法获取输出,如果想要实时获取执行结果,则可以使用参考资料中提到的管道方法实现。