func ShOutput(format string, a ...interface{}) (string, error) {
	envs, cmd, args, err := parse(format, a...)
	if err != nil {
		return "", err
	}
	return sh.OutputWith(envs, cmd, args...)
}
ShOutput formats the provided string and arguments, tokenizes the result using
shell style rules, and then executes the result with mage's sh.OutputWith
package cast
import (
	"fmt"
	"strings"
	"github.com/google/shlex"
	"github.com/magefile/mage/sh"
)
func Sh(format string, a ...interface{}) error {
	envs, cmd, args, err := parse(format, a...)
	if err != nil {
		return err
	}
	return sh.RunWith(envs, cmd, args...)
}
func DirSh(dir, format string, a ...interface{}) error {
	envs, cmd, args, err := parse(format, a...)
	if err != nil {
		return err
	}
	return runWith(dir, envs, cmd, args...)
}
func DirPrepSh(prefix string) func(dir, suffix string, a ...interface{}) error {
	return func(dir, suffix string, a ...interface{}) error {
		format := prefix
		if suffix != "" {
			format = fmt.Sprintf("%s %s", format, suffix)
		}
		return DirSh(dir, format, a...)
	}
}