"Go exec.Command()"의 두 판 사이의 차이

(새 문서: ==개요== ;Go exec() <syntaxhighlight lang='go' run> package main import "fmt" import "os/exec" func main() { cmd := exec.Command("sh", "-c", "cat /etc/os-release | head -3") std...)
 
 
(같은 사용자의 중간 판 12개는 보이지 않습니다)
1번째 줄: 1번째 줄:
==개요==
==개요==
;Go exec()
;Go Command()
;Go exec.Command()
 
==정상 실행 여부만 확인==
<syntaxhighlight lang='go' run>
package main
 
import "fmt"
import "os/exec"
 
func main() {
cmd := exec.Command("touch", "/tmp/hello")
err := cmd.Run()
if err != nil {
panic(err)
}
fmt.Println("ok")
}
</syntaxhighlight>
 
==실행결과 받기==
<syntaxhighlight lang='go' run>
<syntaxhighlight lang='go' run>
package main
package main
8번째 줄: 28번째 줄:


func main() {
func main() {
cmd := exec.Command("sh", "-c", "cat /etc/os-release | head -3")
cmd := exec.Command("sh", "-c", "cat /etc/services | grep ^http")
stdout, err := cmd.Output()
stdout, err := cmd.Output()
if err != nil {
if err != nil {
15번째 줄: 35번째 줄:
}
}
fmt.Println(string(stdout))
fmt.Println(string(stdout))
}
</syntaxhighlight>
<syntaxhighlight lang='go' run>
package main
import "fmt"
import "os/exec"
func main() {
cmd := exec.Command("cat", "/etc/services", "|", "grep", "^http")
stdout, err := cmd.Output()
if err != nil {
panic(err)
}
fmt.Println(string(stdout))
}
</syntaxhighlight>
<syntaxhighlight lang='go' run>
package main
import (
"bytes"
"fmt"
"log"
"os/exec"
"strings"
)
func main() {
cmd := exec.Command("tr", "a-z", "A-Z")
cmd.Stdin = strings.NewReader("some input")
var out bytes.Buffer
cmd.Stdout = &out
err := cmd.Run()
if err != nil {
log.Fatal(err)
}
fmt.Printf("in all caps: %q\n", out.String())
}
</syntaxhighlight>
==오류==
<syntaxhighlight lang='go' run>
package main
import (
"log"
"os"
"os/exec"
)
func main() {
cmd := exec.Command("prog")
cmd.Env = append(os.Environ(),
"FOO=duplicate_value", // ignored
"FOO=actual_value",    // this value is used
)
if err := cmd.Run(); err != nil {
log.Fatal(err)
}
}
}
</syntaxhighlight>
</syntaxhighlight>


==같이 보기==
==같이 보기==
* [[Go 와일드카드 패턴 파일경로 목록 얻기]]
* [[함수 exec()]]
* [[함수 exec()]]


[[분류: Go]]
[[분류: Go]]

2024년 2월 18일 (일) 16:41 기준 최신판

1 개요[ | ]

Go Command()
Go exec.Command()

2 정상 실행 여부만 확인[ | ]

package main

import "fmt"
import "os/exec"

func main() {
	cmd := exec.Command("touch", "/tmp/hello")
	err := cmd.Run()
	if err != nil {
		panic(err)
	}
	fmt.Println("ok")
}

3 실행결과 받기[ | ]

package main

import "fmt"
import "os/exec"

func main() {
	cmd := exec.Command("sh", "-c", "cat /etc/services | grep ^http")
	stdout, err := cmd.Output()
	if err != nil {
		fmt.Println(err.Error())
		return
	}
	fmt.Println(string(stdout))
}
package main

import "fmt"
import "os/exec"

func main() {
	cmd := exec.Command("cat", "/etc/services", "|", "grep", "^http")
	stdout, err := cmd.Output()
	if err != nil {
		panic(err)
	}
	fmt.Println(string(stdout))
}
package main

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

func main() {
	cmd := exec.Command("tr", "a-z", "A-Z")
	cmd.Stdin = strings.NewReader("some input")
	var out bytes.Buffer
	cmd.Stdout = &out
	err := cmd.Run()
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("in all caps: %q\n", out.String())
}

4 오류[ | ]

package main

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

func main() {
	cmd := exec.Command("prog")
	cmd.Env = append(os.Environ(),
		"FOO=duplicate_value", // ignored
		"FOO=actual_value",    // this value is used
	)
	if err := cmd.Run(); err != nil {
		log.Fatal(err)
	}
}

5 같이 보기[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}