parser/arithm: fix && and ||
"&" and "|" have higher priority, so they were consuming the first character of
"&&" and "||", leaving a trailing "&" or "|".
parser/arithm: fix comparison operators
> and < were recognized before >= and <=. For this reason, >= and <= were never
parsed (since they are prefixes of < and >).
shell/arithm: implement assignments
The parser still chokes on assignments with an operation.
builtins: implement return
shell/task: fix case not handling quoted strings
Executing a case with a quoted string in a pattern resulted in:
mrsh: ../ast.c:343: mrsh_word_get_string: Assertion `word->type == MRSH_WORD_STRING' failed.
Partially implement arithmetic expansion
The only expansion missing is assignment expansion, which requires more
Additionally, the parser is missing variable support, e.g. $((var+1)).
test/loop: print exit in loop test description
builtin/exit: exit immediately
test: fix incorrect $? in async test
test: enable all pipeline tests
test: fix async test randomly failing
Wait for both jobs to complete before printing their exit status. Otherwise one
of them may not have finished to print its character before the exit status of
the other is printed.
test: fix Meson tests
The fullpath was given as the test name, instead of as an argument.
Add configure script and Makefile
The configure script is POSIX sh and the Makefile is POSIX make.
test: make async test reliable
test: add basic async list tests
test: pipeline with subshell has been fixed
shell: fix pipeline bangs
test/case: add description for each subtest
shell/task: add pipeline bang
test: add subshell assignment test