nuta / nsh

A command-line shell like fish, but POSIX compatible.
906 stars 34 forks source link

Add POSIX parameter expansions and initialization #48

Open Neved4 opened 10 months ago

Neved4 commented 10 months ago

For validation, we could use something like grok.sh or https://stackoverflow.com/a/67261832.

Run code as nsh -c '<code>', e.g.: nsh -c 'var='.

Features

Notice how is shown when there's a newline.

For reference, here is the expansion table: parameter expansion var set var empty var unset
${var-default} $var "" default
${var=default} $var "" default
${var?default} $var "" exit 127
${var+default} default default ""
${var:-default} $var default default
${var:=default} $var default default
${var:?default} $var exit 127 exit 127
${var:+default} default "" ""

For POSIX parameter expansion, see: POSIX.1-2017: Parameter Expansion.
For other applications of parameter expansion, see: The Bash Hackers Wiki: Parameter Expansion.
For a more historical reference, see: The Traditional Bourne Shell Family.