_example
Run gofmt: add missing //go:build directives and trailing newlines.github
Update CI: Go 1.25/1.26 and latest GitHub Actions.gitignore
Add .gitignore for .codex.travis.yml
added power support arch ppc64le on yml file.go.mod
Revert change of go.modgo.test.sh
chmod +xLICENSE
add LICENSEREADME.md
Merge remote-tracking branch 'origin/master' into pr55shellwords_benchmark_test.go
Add benchmarks for Parse variantsshellwords_security_test.go
Run gofmt: add missing //go:build directives and trailing newlinesshellwords_test.go
Add more tests for environment expansion during scanningshellwords.go
Expand environment variables while scanning the lineutil_posix.go
Run gofmt: add missing //go:build directives and trailing newlinesutil_windows.go
Run gofmt: add missing //go:build directives and trailing newlinesgo-shellwords
Parse line as shell words.
Usage
args, err := shellwords.Parse("./foo --bar=baz")
// args should be ["./foo", "--bar=baz"]envs, args, err := shellwords.ParseWithEnvs("FOO=foo BAR=baz ./foo --bar=baz")
// envs should be ["FOO=foo", "BAR=baz"]
// args should be ["./foo", "--bar=baz"]os.Setenv("FOO", "bar")
p := shellwords.NewParser()
p.ParseEnv = true
args, err := p.Parse("./foo $FOO")
// args should be ["./foo", "bar"]p := shellwords.NewParser()
p.ParseBacktick = true
args, err := p.Parse("./foo `echo $SHELL`")
// args should be ["./foo", "/bin/bash"]shellwords.ParseBacktick = true
p := shellwords.NewParser()
args, err := p.Parse("./foo `echo $SHELL`")
// args should be ["./foo", "/bin/bash"]p := shellwords.NewParser()
p.ParseComment = true
args, err := p.Parse("./foo # comment")
// args should be ["./foo"]p := shellwords.NewParser()
p.SetExcludeSeparators('\t', ';')Thanks
This is based on cpan module Parse::CommandLine.
License
under the MIT License: http://mattn.mit-license.org/2017
Author
Yasuhiro Matsumoto (a.k.a mattn)