go语言os.arg函数使用
时间: 2023-12-02 17:06:25 浏览: 26
`os.Args` 是一个字符串切片,用于访问命令行参数。它是一个全局变量,可以在程序的任何地方使用。
示例代码:
```go
package main
import (
"fmt"
"os"
)
func main() {
// 获取命令行参数
args := os.Args
fmt.Println(args)
// 循环遍历命令行参数
for i, arg := range args {
fmt.Printf("args[%d]: %s\n", i, arg)
}
}
```
执行程序并传入参数:
```bash
go run main.go arg1 arg2 arg3
```
输出结果:
```bash
[arg1 arg2 arg3]
args[0]: /tmp/go-build017445238/b001/exe/main
args[1]: arg1
args[2]: arg2
args[3]: arg3
```
可以看到,`os.Args` 返回的第一个参数是程序本身的路径,后面是传入的参数。可以通过循环遍历来获取每个参数的值。
相关问题
golang os/exec . Command
`os/exec` 包提供了一个用于执行外部命令的接口,其中 `Command` 函数是 `os/exec` 包的核心之一。
`Command` 函数的定义如下:
```go
func Command(name string, arg ...string) *Cmd
```
该函数接受一个命令名 `name` 和一些可选的参数 `arg`,并返回一个指向 `Cmd` 结构体的指针。`Cmd` 结构体代表了一个正在运行的命令,可以通过它来控制命令的执行和获取输出信息。
例如,以下代码将会在命令行中执行 `ls` 命令,并将输出信息打印到标准输出:
```go
package main
import (
"fmt"
"os/exec"
)
func main() {
cmd := exec.Command("ls")
output, err := cmd.Output()
if err != nil {
fmt.Println(err)
}
fmt.Println(string(output))
}
```
在上面的代码中,`Command` 函数创建了一个 `Cmd` 结构体的实例,代表了 `ls` 命令。然后,我们通过 `Output` 方法执行了该命令,并获取了命令的输出信息。最后,我们将输出信息转换为字符串并打印到标准输出。
需要注意的是,`Command` 函数只是创建了一个 `Cmd` 结构体的实例,它并没有实际执行命令。要执行命令并获取输出信息,需要调用 `Cmd` 结构体的 `Run`、`Output`、`CombinedOutput` 等方法。
另外,通过设置 `Cmd` 结构体的一些属性,我们还可以控制命令的执行方式,例如设置命令的工作目录、环境变量等。
exec.Command
`exec.Command` 是 os/exec 包中的一个函数,用于创建一个 `*exec.Cmd` 对象,以便执行命令行。
`exec.Command` 函数的函数签名如下:
```go
func Command(name string, arg ...string) *Cmd
```
其中,`name` 参数表示要执行的命令的名称,`arg` 参数表示要传递给命令的参数列表。
`exec.Command` 函数返回一个 `*exec.Cmd` 对象,该对象包含了执行命令的相关信息,例如要执行的命令名称、参数列表、环境变量、工作目录等等。
`*exec.Cmd` 对象提供了一些方法,用于配置执行命令的相关属性,例如:
- `cmd.Args`:命令行参数列表。
- `cmd.Env`:环境变量列表。
- `cmd.Dir`:工作目录。
- `cmd.Stdout`:标准输出。
- `cmd.Stderr`:标准错误。
- `cmd.Stdin`:标准输入。
- `cmd.Run()`:执行命令并等待命令完成。
- `cmd.Start()`:启动命令,但不等待命令完成。
- `cmd.Wait()`:等待命令完成。
以上仅是一些常用的方法,os/exec 包还提供了更多的方法和选项,具体可以参考官方文档:https://golang.org/pkg/os/exec/