1

I'm writing a pretty small package for personal use that wraps os/exec to make running multiple commands in the same terminal a little nicer.

I know to run multiple commands at once on linux you can do the following after reading this answer:

cmdSeq := "cd ~/some-awesome-directory/;git status"
cmd := exec.Command("/bin/sh", "-c", cmdSeq)
result, err := cmd.CombinedOutput()

// etc ...

But /bin/sh is unique to Linux (and potentially Mac, I haven't tested on Mac OS). If I wanted to do a similar thing for windows users what should I use to run multiple commands together in the same shell instance?

Repository for reference

Mikey
  • 2,606
  • 1
  • 12
  • 20

1 Answers1

1

Looks like I stumbled upon it with a bit of research, you can use the following on Windows:

exec.Command("cmd", "/C", "echo foo && echo bar")
Mikey
  • 2,606
  • 1
  • 12
  • 20
  • 1
    As a followup, you should question whether or not you require actual shell access. Can you just execute the desired binary? If you're passing any kind of user input into shell execution you're opening yourself up to potential security/abuse problems. – Thomas May 24 '18 at 21:42
  • I'll keep that in mind thanks @Thomas, primarily I'm going to be using this for internal scripts just to make my life easier, i.e. I've got one that increments a repositories SemVer tag and releases it for me. – Mikey May 25 '18 at 07:01