Difference between revisions of "Golang exec.command"

From UVOO Tech Wiki
Jump to navigation Jump to search
(Created page with "Windows ``` package main import( "fmt" "os/exec" "os" "log" ) func pscmd(s string){ args := []string{s} // cmd := exec.Command("powershell.exe", "ls", "-Depth", "1...")
 
Line 1: Line 1:
 +
Windows and Linux
 +
```
 +
package main
 +
 +
import (
 +
    "fmt"
 +
    "os/exec"
 +
    "os"
 +
    //"strings"
 +
    "runtime"
 +
)
 +
 +
 +
func linux_cmd() {
 +
  if len(os.Args) < 2 {
 +
    fmt.Printf("Usage: %v <cmd> <args>\n", os.Args[0])
 +
    fmt.Printf("Example: %v ls -lhat\n", os.Args[0])
 +
    os.Exit(3)
 +
  }
 +
  name := os.Args[1]
 +
  args := os.Args[2:]
 +
  cmd := exec.Command(name, args...)
 +
  out, err := cmd.Output()
 +
  if err != nil {
 +
    fmt.Println(err)
 +
  }
 +
  fmt.Println(string(out))
 +
}
 +
 +
 +
func win_cmd() {
 +
  if len(os.Args) < 2 {
 +
    fmt.Printf("Usage: %v <cmd> <args>\n", os.Args[0])
 +
    fmt.Printf("Example: %v ls -lhat\n", os.Args[0])
 +
    os.Exit(3)
 +
  }
 +
  // name := os.Args[1]
 +
  name := "powershell.exe"
 +
  args := os.Args[1:]
 +
  cmd := exec.Command(name, args...)
 +
  out, err := cmd.Output()
 +
  if err != nil {
 +
    fmt.Println(err)
 +
  }
 +
  fmt.Println(string(out))
 +
}
 +
 +
func main() {
 +
  os := runtime.GOOS
 +
  //var os string = runtime.GOOS
 +
  if os == "linux" {
 +
    linux_cmd()
 +
  }else if os == "windows" {
 +
fmt.Printf("OS %v is supported.", os)
 +
win_cmd()
 +
  }else{
 +
  fmt.Printf("OS %v not supported.", os)
 +
  }
 +
}
 +
```
 +
 +
 +
 
Windows
 
Windows
 
```
 
```

Revision as of 23:17, 15 November 2020

Windows and Linux

package main

import (
    "fmt"
    "os/exec"
    "os"
    //"strings"
    "runtime"
)


func linux_cmd() {
  if len(os.Args) < 2 {
    fmt.Printf("Usage: %v <cmd> <args>\n", os.Args[0])
    fmt.Printf("Example: %v ls -lhat\n", os.Args[0])
    os.Exit(3)
  }
  name := os.Args[1]
  args := os.Args[2:]
  cmd := exec.Command(name, args...)
  out, err := cmd.Output()
  if err != nil {
    fmt.Println(err)
  }
  fmt.Println(string(out))
}


func win_cmd() {
  if len(os.Args) < 2 {
    fmt.Printf("Usage: %v <cmd> <args>\n", os.Args[0])
    fmt.Printf("Example: %v ls -lhat\n", os.Args[0])
    os.Exit(3)
  }
  // name := os.Args[1]
  name := "powershell.exe"
  args := os.Args[1:]
  cmd := exec.Command(name, args...)
  out, err := cmd.Output()
  if err != nil {
    fmt.Println(err)
  }
  fmt.Println(string(out))
}

func main() {
  os := runtime.GOOS
  //var os string = runtime.GOOS
  if os == "linux" {
    linux_cmd()
  }else if os == "windows" {
    fmt.Printf("OS %v is supported.", os)
    win_cmd()
  }else{
      fmt.Printf("OS %v not supported.", os)
  }
}

Windows

package main

import(
    "fmt"
    "os/exec"
    "os"
    "log"
)


func pscmd(s string){
    args := []string{s}
    // cmd := exec.Command("powershell.exe", "ls", "-Depth", "1")
    cmd := exec.Command("powershell.exe", args...)

    cmd.Stdout = os.Stdout
    cmd.Stderr = os.Stderr
    err := cmd.Run()
    if err != nil {
        log.Fatalf("cmd.Run() failed with %s\n", err)
    }
    fmt.Println("======")
}

func main(){   

    pscmd("ls -Depth 1")
    pscmd("echo 'hi there'")

}