Releases: mvdan/sh
v3.4.1
- syntax
- Don't return an empty string on empty input to
Quote
- Don't return an empty string on empty input to
- expand
- Properly sort in
ListEnviron
to avoid common prefix issues
- Properly sort in
- interp
export
used in functions now affects the global scope- Support looking for scripts in
$PATH
insource
- Properly slice arrays in parameter expansions
Binaries built on go version go1.17.3 linux/amd64
via a shell script.
Consider becoming a sponsor if you benefit from the work that went into this release!
v3.4.0
This release drops support for Go 1.15, which allows the code to start benefitting from io/fs
.
- cmd/shfmt
- Walks directories ~10% faster thanks to
filepath.WalkDir
- Walks directories ~10% faster thanks to
- syntax
- Add
Quote
to mirrorstrconv.Quote
for shell syntax - Skip null characters when parsing, just like Bash
- Rewrite fuzzers with Go 1.18's native fuzzing
- Add
- fileutil
- Add
CouldBeScript2
usingio/fs.DirEntry
- Add
- expand
- Skip or stop at null characters, just like Bash
- interp
- Set
GID
just likeUID
- Add support for
read -p
- Add support for
pwd
flags - Create random FIFOs for process substitutions more robustly
- Avoid leaking an open file when interpreting
$(<file)
- Set
Binaries built on go version go1.17.1 linux/amd64
via a shell script.
Consider becoming a sponsor if you benefit from the work that went into this release!
v3.3.1
Highlights:
- syntax
- Don't convert
&
in a separate line into;
- Fix a
BinaryNextLine
edge case idempotency bug - Never start printing a command with an escaped newline
- Don't convert
- interp
- Support calling
Runner.Reset
beforeRunner.Run
- Obey
set -e
for failed redirections
- Support calling
Binaries built on go version go1.16.6 linux/amd64
via a shell script.
Consider becoming a sponsor if you benefit from the work that went into this release!
v3.3.0
Highlights:
- cmd/shfmt
- Document the
FORCE_COLOR
env var to always use colors in diffs
- Document the
- syntax
- Add the printer
SingleLine
option to avoid printing newlines - Positions now use more bits for line numbers than column numbers
- Test operators like
&&
and||
no longer escape newlines - Properly handle closing backquotes in a few edge cases
- Properly handle trailing escaped newlines in heredocs
- Add the printer
- interp
- Redesigned variable scoping to fix a number of edge cases
- Refactor
set -o nounset
support to fix many edge cases - Deprecate
LookPath
in favor ofLookPathDir
- Array element words are now expanded correctly
- Add support for
trap
with error and exit signals - Add support for
shopt -s nullglob
- Add support for
type -p
Binaries built on go version go1.16.4 linux/amd64
via a shell script.
Consider becoming a sponsor if you benefit from the work that went into this release!
v3.2.4
Highlights:
- cmd/shfmt
- Don't stop handling arguments when one results in a failure
- expand
- Don't panic when a backslash is followed by EOF
Binaries built on go version go1.16 linux/amd64
via a shell script.
Consider becoming a sponsor if you benefit from the work that went into this release!
v3.2.2
Highlights:
- syntax
- Avoid comment position panic in the printer
Binaries built on go version go1.15.7 linux/amd64
via a shell script.
Consider becoming a sponsor if you benefit from the work that went into this release!
v3.2.1
Highlights:
- syntax
- Fix an endless loop when parsing single quotes in parameter expansions
- Properly print assignments using escaped newlines
- Print inline heredoc comments in the right place
- interp
- Always expand
~
in Bash test expressions
- Always expand
- expand
- Don't panic on out of bounds array index expansions
Binaries built on go version go1.15.5 linux/amd64
via a shell script.
Consider becoming a sponsor if you benefit from the work that went into this release!
v3.2.0
Highlights:
- cmd/shfmt
- Add a man page via scdoc; see shfmt.1.scd
- Add
-filename
to give a name to standard input
- syntax
- Add initial support for Bats
- Protect line and column position numbers against overflows
- Rewrite arithmetic parsing to fix operator precedence
- Don't add parentheses to
function f {...}
declarations for ksh support KeepPadding
now obeys extra indentation when using space indentation- Properly tokenize
((
within test expressions - Properly tokenize single quotes within parameter expansions
- Obey print options inside
<<-
heredocs - Don't simplify indexed parameter expansions in arithmetic expressions
- Improve parsing errors for missing test expressions
LangVariant
now implements flag.Value
- interp
- Avoid panic on C-style loops which omit expressions
$@
and$*
always exist, so"$@"
can expand to zero words
Binaries built on go version go1.15.3 linux/amd64
via a shell script.
Consider becoming a sponsor if you benefit from the work that went into this release!
v3.1.2
Highlights:
- syntax
- Fix brace indentation when using
FunctionNextLine
- Support indirect parameter expansions with transformations
- Stop heredoc bodies only when the entire line matches
- Fix brace indentation when using
- interp
- Make the tests pass on 32-bit platforms
Binaries built on go version go1.14.4 linux/amd64
.
v3.1.1
Highlights:
- cmd/shfmt
- Recognise
function_next_line
in EditorConfig files
- Recognise
- syntax
- Don't ignore escaped newlines at the end of heredoc bodies
- Improve support for parsing regexes in test expressions
- Count columns for
KeepPadding
in bytes, to better support unicode - Never let
KeepPadding
add spaces right after indentation
- interp
- Hide unset variables when executing programs
Binaries built on go version go1.14.2 linux/amd64
.