├── .gitattributes ├── .github ├── FUNDING.yml └── workflows │ └── test.yml ├── .gitignore ├── CHANGELOG.md ├── LICENSE ├── README.md ├── cmd ├── gosh │ ├── main.go │ └── main_test.go └── shfmt │ ├── Dockerfile │ ├── docker-entrypoint.sh │ ├── main.go │ ├── main_test.go │ ├── shfmt.1.scd │ └── testdata │ └── script │ ├── atomic.txtar │ ├── basic.txtar │ ├── diff.txtar │ ├── editorconfig.txtar │ ├── flags.txtar │ ├── simplify.txtar │ ├── tojson.txtar │ └── walk.txtar ├── expand ├── arith.go ├── braces.go ├── braces_test.go ├── doc.go ├── environ.go ├── environ_test.go ├── expand.go ├── expand_nonwindows.go ├── expand_test.go ├── expand_windows.go ├── param.go └── valuekind_string.go ├── fileutil ├── file.go └── file_test.go ├── go.mod ├── go.sum ├── interp ├── api.go ├── builtin.go ├── example_test.go ├── handler.go ├── handler_test.go ├── interp_test.go ├── os_notunix.go ├── os_unix.go ├── runner.go ├── test.go ├── test_classic.go ├── trace.go ├── unexported_test.go ├── unix_test.go ├── vars.go └── windows_test.go ├── moreinterp ├── coreutils │ ├── coreutils.go │ └── coreutils_test.go ├── go.mod └── go.sum ├── pattern ├── example_test.go ├── pattern.go └── pattern_test.go ├── shell ├── doc.go ├── example_test.go ├── expand.go └── expand_test.go └── syntax ├── bench_test.go ├── braces.go ├── canonical.sh ├── doc.go ├── example_test.go ├── filetests_test.go ├── fuzz_test.go ├── lexer.go ├── nodes.go ├── parser.go ├── parser_arithm.go ├── parser_test.go ├── printer.go ├── printer_test.go ├── quote.go ├── quote_test.go ├── simplify.go ├── simplify_test.go ├── testdata └── fuzz │ ├── FuzzParsePrint │ ├── 293db3718a4ab7a5 │ └── 6d0dc226922dc40c │ └── FuzzQuote │ ├── 23cf0175e40438e8033b11cdd1441a2d2893a99144c4ac0f2b5f4caa113c9edd │ ├── 25f36feab4af00bc4dfc3cf56da02b842b62ba8c5ac44862b5b3b776a0d519b4 │ ├── 2788bd30d386289e06a1024a030ad5ab7f363c703bea8a5d035de174491029bf │ ├── 39d5fdf93d52b2cd50fb9582b27c82d159de0575623865538ced2a7780499fa6 │ ├── 6fcce067200fb8ae6d4c2b1b7c1f55d3f7e4b38f4ee4f05e50e496a7c399f2d8 │ ├── b26cd471412059c6ab6aa27b6153d42d2d00cbb00ad11d3cd88a192a7dfd2cdf │ ├── df6b5d69da50c7d58ca13f6dde15e2a7224a53ce7bd72a02d49893e580b6775b │ └── ea14da9b0299f4463c20659e2a51808fef8d5fb0de6324f0de64153511d4b1f8 ├── token_string.go ├── tokens.go ├── typedjson ├── json.go ├── json_test.go └── testdata │ └── roundtrip │ ├── file.json │ └── file.sh ├── walk.go └── walk_test.go /.gitattributes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/.gitattributes -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: mvdan 2 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/.github/workflows/test.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/.gitignore -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/CHANGELOG.md -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/README.md -------------------------------------------------------------------------------- /cmd/gosh/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/cmd/gosh/main.go -------------------------------------------------------------------------------- /cmd/gosh/main_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/cmd/gosh/main_test.go -------------------------------------------------------------------------------- /cmd/shfmt/Dockerfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/cmd/shfmt/Dockerfile -------------------------------------------------------------------------------- /cmd/shfmt/docker-entrypoint.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/cmd/shfmt/docker-entrypoint.sh -------------------------------------------------------------------------------- /cmd/shfmt/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/cmd/shfmt/main.go -------------------------------------------------------------------------------- /cmd/shfmt/main_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/cmd/shfmt/main_test.go -------------------------------------------------------------------------------- /cmd/shfmt/shfmt.1.scd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/cmd/shfmt/shfmt.1.scd -------------------------------------------------------------------------------- /cmd/shfmt/testdata/script/atomic.txtar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/cmd/shfmt/testdata/script/atomic.txtar -------------------------------------------------------------------------------- /cmd/shfmt/testdata/script/basic.txtar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/cmd/shfmt/testdata/script/basic.txtar -------------------------------------------------------------------------------- /cmd/shfmt/testdata/script/diff.txtar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/cmd/shfmt/testdata/script/diff.txtar -------------------------------------------------------------------------------- /cmd/shfmt/testdata/script/editorconfig.txtar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/cmd/shfmt/testdata/script/editorconfig.txtar -------------------------------------------------------------------------------- /cmd/shfmt/testdata/script/flags.txtar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/cmd/shfmt/testdata/script/flags.txtar -------------------------------------------------------------------------------- /cmd/shfmt/testdata/script/simplify.txtar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/cmd/shfmt/testdata/script/simplify.txtar -------------------------------------------------------------------------------- /cmd/shfmt/testdata/script/tojson.txtar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/cmd/shfmt/testdata/script/tojson.txtar -------------------------------------------------------------------------------- /cmd/shfmt/testdata/script/walk.txtar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/cmd/shfmt/testdata/script/walk.txtar -------------------------------------------------------------------------------- /expand/arith.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/expand/arith.go -------------------------------------------------------------------------------- /expand/braces.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/expand/braces.go -------------------------------------------------------------------------------- /expand/braces_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/expand/braces_test.go -------------------------------------------------------------------------------- /expand/doc.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/expand/doc.go -------------------------------------------------------------------------------- /expand/environ.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/expand/environ.go -------------------------------------------------------------------------------- /expand/environ_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/expand/environ_test.go -------------------------------------------------------------------------------- /expand/expand.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/expand/expand.go -------------------------------------------------------------------------------- /expand/expand_nonwindows.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/expand/expand_nonwindows.go -------------------------------------------------------------------------------- /expand/expand_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/expand/expand_test.go -------------------------------------------------------------------------------- /expand/expand_windows.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/expand/expand_windows.go -------------------------------------------------------------------------------- /expand/param.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/expand/param.go -------------------------------------------------------------------------------- /expand/valuekind_string.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/expand/valuekind_string.go -------------------------------------------------------------------------------- /fileutil/file.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/fileutil/file.go -------------------------------------------------------------------------------- /fileutil/file_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/fileutil/file_test.go -------------------------------------------------------------------------------- /go.mod: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/go.mod -------------------------------------------------------------------------------- /go.sum: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/go.sum -------------------------------------------------------------------------------- /interp/api.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/interp/api.go -------------------------------------------------------------------------------- /interp/builtin.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/interp/builtin.go -------------------------------------------------------------------------------- /interp/example_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/interp/example_test.go -------------------------------------------------------------------------------- /interp/handler.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/interp/handler.go -------------------------------------------------------------------------------- /interp/handler_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/interp/handler_test.go -------------------------------------------------------------------------------- /interp/interp_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/interp/interp_test.go -------------------------------------------------------------------------------- /interp/os_notunix.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/interp/os_notunix.go -------------------------------------------------------------------------------- /interp/os_unix.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/interp/os_unix.go -------------------------------------------------------------------------------- /interp/runner.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/interp/runner.go -------------------------------------------------------------------------------- /interp/test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/interp/test.go -------------------------------------------------------------------------------- /interp/test_classic.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/interp/test_classic.go -------------------------------------------------------------------------------- /interp/trace.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/interp/trace.go -------------------------------------------------------------------------------- /interp/unexported_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/interp/unexported_test.go -------------------------------------------------------------------------------- /interp/unix_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/interp/unix_test.go -------------------------------------------------------------------------------- /interp/vars.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/interp/vars.go -------------------------------------------------------------------------------- /interp/windows_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/interp/windows_test.go -------------------------------------------------------------------------------- /moreinterp/coreutils/coreutils.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/moreinterp/coreutils/coreutils.go -------------------------------------------------------------------------------- /moreinterp/coreutils/coreutils_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/moreinterp/coreutils/coreutils_test.go -------------------------------------------------------------------------------- /moreinterp/go.mod: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/moreinterp/go.mod -------------------------------------------------------------------------------- /moreinterp/go.sum: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/moreinterp/go.sum -------------------------------------------------------------------------------- /pattern/example_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/pattern/example_test.go -------------------------------------------------------------------------------- /pattern/pattern.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/pattern/pattern.go -------------------------------------------------------------------------------- /pattern/pattern_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/pattern/pattern_test.go -------------------------------------------------------------------------------- /shell/doc.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/shell/doc.go -------------------------------------------------------------------------------- /shell/example_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/shell/example_test.go -------------------------------------------------------------------------------- /shell/expand.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/shell/expand.go -------------------------------------------------------------------------------- /shell/expand_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/shell/expand_test.go -------------------------------------------------------------------------------- /syntax/bench_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/syntax/bench_test.go -------------------------------------------------------------------------------- /syntax/braces.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/syntax/braces.go -------------------------------------------------------------------------------- /syntax/canonical.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/syntax/canonical.sh -------------------------------------------------------------------------------- /syntax/doc.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/syntax/doc.go -------------------------------------------------------------------------------- /syntax/example_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/syntax/example_test.go -------------------------------------------------------------------------------- /syntax/filetests_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/syntax/filetests_test.go -------------------------------------------------------------------------------- /syntax/fuzz_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/syntax/fuzz_test.go -------------------------------------------------------------------------------- /syntax/lexer.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/syntax/lexer.go -------------------------------------------------------------------------------- /syntax/nodes.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/syntax/nodes.go -------------------------------------------------------------------------------- /syntax/parser.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/syntax/parser.go -------------------------------------------------------------------------------- /syntax/parser_arithm.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/syntax/parser_arithm.go -------------------------------------------------------------------------------- /syntax/parser_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/syntax/parser_test.go -------------------------------------------------------------------------------- /syntax/printer.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/syntax/printer.go -------------------------------------------------------------------------------- /syntax/printer_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/syntax/printer_test.go -------------------------------------------------------------------------------- /syntax/quote.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/syntax/quote.go -------------------------------------------------------------------------------- /syntax/quote_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/syntax/quote_test.go -------------------------------------------------------------------------------- /syntax/simplify.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/syntax/simplify.go -------------------------------------------------------------------------------- /syntax/simplify_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/syntax/simplify_test.go -------------------------------------------------------------------------------- /syntax/testdata/fuzz/FuzzParsePrint/293db3718a4ab7a5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/syntax/testdata/fuzz/FuzzParsePrint/293db3718a4ab7a5 -------------------------------------------------------------------------------- /syntax/testdata/fuzz/FuzzParsePrint/6d0dc226922dc40c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/syntax/testdata/fuzz/FuzzParsePrint/6d0dc226922dc40c -------------------------------------------------------------------------------- /syntax/testdata/fuzz/FuzzQuote/23cf0175e40438e8033b11cdd1441a2d2893a99144c4ac0f2b5f4caa113c9edd: -------------------------------------------------------------------------------- 1 | go test fuzz v1 2 | string("\uffff") 3 | byte('\x02') 4 | -------------------------------------------------------------------------------- /syntax/testdata/fuzz/FuzzQuote/25f36feab4af00bc4dfc3cf56da02b842b62ba8c5ac44862b5b3b776a0d519b4: -------------------------------------------------------------------------------- 1 | go test fuzz v1 2 | string("\xb3c") 3 | byte('\x02') 4 | -------------------------------------------------------------------------------- /syntax/testdata/fuzz/FuzzQuote/2788bd30d386289e06a1024a030ad5ab7f363c703bea8a5d035de174491029bf: -------------------------------------------------------------------------------- 1 | go test fuzz v1 2 | string("\x0fC") 3 | byte('\x00') 4 | -------------------------------------------------------------------------------- /syntax/testdata/fuzz/FuzzQuote/39d5fdf93d52b2cd50fb9582b27c82d159de0575623865538ced2a7780499fa6: -------------------------------------------------------------------------------- 1 | go test fuzz v1 2 | string("\u05f5A") 3 | byte('\x00') 4 | -------------------------------------------------------------------------------- /syntax/testdata/fuzz/FuzzQuote/6fcce067200fb8ae6d4c2b1b7c1f55d3f7e4b38f4ee4f05e50e496a7c399f2d8: -------------------------------------------------------------------------------- 1 | go test fuzz v1 2 | string("\U00086199") 3 | byte('\x02') 4 | -------------------------------------------------------------------------------- /syntax/testdata/fuzz/FuzzQuote/b26cd471412059c6ab6aa27b6153d42d2d00cbb00ad11d3cd88a192a7dfd2cdf: -------------------------------------------------------------------------------- 1 | go test fuzz v1 2 | string("\xb6") 3 | byte('\x01') 4 | -------------------------------------------------------------------------------- /syntax/testdata/fuzz/FuzzQuote/df6b5d69da50c7d58ca13f6dde15e2a7224a53ce7bd72a02d49893e580b6775b: -------------------------------------------------------------------------------- 1 | go test fuzz v1 2 | string("\x050") 3 | byte('\x02') 4 | -------------------------------------------------------------------------------- /syntax/testdata/fuzz/FuzzQuote/ea14da9b0299f4463c20659e2a51808fef8d5fb0de6324f0de64153511d4b1f8: -------------------------------------------------------------------------------- 1 | go test fuzz v1 2 | string("\U000600a04") 3 | byte('\x00') 4 | -------------------------------------------------------------------------------- /syntax/token_string.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/syntax/token_string.go -------------------------------------------------------------------------------- /syntax/tokens.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/syntax/tokens.go -------------------------------------------------------------------------------- /syntax/typedjson/json.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/syntax/typedjson/json.go -------------------------------------------------------------------------------- /syntax/typedjson/json_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/syntax/typedjson/json_test.go -------------------------------------------------------------------------------- /syntax/typedjson/testdata/roundtrip/file.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/syntax/typedjson/testdata/roundtrip/file.json -------------------------------------------------------------------------------- /syntax/typedjson/testdata/roundtrip/file.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/syntax/typedjson/testdata/roundtrip/file.sh -------------------------------------------------------------------------------- /syntax/walk.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/syntax/walk.go -------------------------------------------------------------------------------- /syntax/walk_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mvdan/sh/HEAD/syntax/walk_test.go --------------------------------------------------------------------------------