一个接受命令作为输入并在终端中运行的程序

huangapple go评论124阅读模式
英文:

A program that takes a command as input and runs it in the terminal

问题

我有点知道如何在C语言中实现这个,但在Go语言中如何实现呢?

以下是我使用的代码:

  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. "os/exec"
  6. "strings"
  7. )
  8. func main() {
  9. if len(os.Args) < 2 { // 没有指定命令
  10. fmt.Println("Usage: ./program_name terminal_command ...")
  11. os.Exit(1)
  12. } else {
  13. cmd := strings.Join(os.Args[1:], " ")
  14. cmdParts := strings.Split(cmd, " ")
  15. cmdName := cmdParts[0]
  16. cmdArgs := cmdParts[1:]
  17. cmdExec := exec.Command(cmdName, cmdArgs...)
  18. cmdExec.Stdout = os.Stdout
  19. cmdExec.Stderr = os.Stderr
  20. err := cmdExec.Run()
  21. if err != nil {
  22. fmt.Println(err)
  23. os.Exit(1)
  24. }
  25. }
  26. }

希望对你有帮助!

英文:

I kind of know how to do this in C, but how to do it in Go?

This is the code I'm using:

  1. #include &lt;stdio.h&gt;
  2. #include &lt;stdlib.h&gt;
  3. #include &lt;string.h&gt;
  4. #define MAX_CMN_LEN 100
  5. int main(int argc, char *argv[])
  6. {
  7. char cmd[MAX_CMN_LEN] = &quot;&quot;, **p;
  8. if (argc &lt; 2) /*no command specified*/
  9. {
  10. fprintf(stderr, &quot;Usage: ./program_name terminal_command ...&quot;);
  11. exit(EXIT_FAILURE);
  12. }
  13. else
  14. {
  15. strcat(cmd, argv[1]);
  16. for (p = &amp;argv[2]; *p; p++)
  17. {
  18. strcat(cmd, &quot; &quot;);
  19. strcat(cmd, *p);
  20. }
  21. system(cmd);
  22. }
  23. return 0;
  24. }

答案1

得分: 1

像这样:

  1. package main
  2. import (
  3. "os"
  4. "os/exec"
  5. )
  6. func main() {
  7. if len(os.Args) < 2 {
  8. panic("用法:./程序名 终端命令 ...")
  9. }
  10. cmd := exec.Command(os.Args[1], os.Args[2:]...)
  11. cmd.Run()
  12. }
英文:

Something like this:

  1. package main
  2. import (
  3. &quot;os&quot;
  4. &quot;os/exec&quot;
  5. )
  6. func main() {
  7. if len(os.Args) &lt; 2 {
  8. panic(&quot;Usage: ./program_name terminal_command ...&quot;)
  9. }
  10. cmd := exec.Command(os.Args[1], os.Args[2:]...)
  11. cmd.Run()
  12. }

huangapple
  • 本文由 发表于 2017年4月9日 21:51:25
  • 转载请务必保留本文链接:https://go.coder-hub.com/43307491.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定