Why Sponsor Oils? | source | all docs for version 0.22.0 | all versions | oilshell.org
Oils Reference — Chapter Mini Languages
This chapter describes "mini-languages" like glob patterns and brace expansion.
In contrast, the main sub languages of YSH are command, word, and expression.
(in progress)
Arithmetic expressions are parsed and evaluated in many parts of POSIX shell and bash.
Static:
a=$(( x + 1 )) # POSIX shell
# bash
(( a = x + 1 ))
for (( i = 0; i < n; ++i )); do
echo $i
done
Dynamic:
[[ 5 -eq 3+x ]] # but not test 5 -eq 3+x
Array index contexts:
echo ${a[i+1]} # get
echo ${#a[i+1]} # calculate
a[i+1]=foo # set
printf -v 'a[i+1]' # assign to this location
unset 'a[i+1]' # unset location
echo ${a[@] : i+1 : i+2 } # bash slicing
TODO: glob syntax
TODO: extended glob syntax
Part of dbracket
History substitution uses !
.
These backslash escape sequences are used in echo
-e, printf, and in
C-style strings like $'foo\n'
:
\\ backslash
\a alert (BEL)
\b backspace
\c stop processing remaining input
\e the escape character \x1b
\f form feed
\n newline
\r carriage return
\t tab
\v vertical tab
\xHH the byte with value HH, in hexadecimal
\uHHHH the unicode char with value HHHH, in hexadecimal
\UHHHHHHHH the unicode char with value HHHHHHHH, in hexadecimal
Also:
\" Double quote.
Inconsistent octal escapes:
\0NNN echo -e '\0123'
\NNN printf '\123'
echo $'\123'
TODO: Verify other differences between echo -e
, printf
, and $''
. See
frontend/lexer_def.py
.