1.8. Hush shell¶
barebox has an integrated shell: hush. This is a simple shell which is enough for writing simple shell scripts. Usage of the shell for scripts should not be overstrained. Often a command written in C is more flexible and also more robust than a complicated shell script.
1.8.1. Hush features¶
variables:
a="Hello user"
echo $a
Hello user
conditional execution if
/ elif
/ else
/ fi
:
if [ ${foo} = ${bar} ]; then
echo "foo equals bar"
else
echo "foo and bar differ"
fi
for
loops:
for i in a b c; do
echo $i
done
while
loops:
while true; do
echo "endless loop"
done
wildcard globbing:
ls d*
echo ???
There is no support in hush for input/output redirection or pipes.
Some commands work around this limitation with additional arguments. for
example the echo - echo args to console command has the -a FILE
option for appending
a file and the -o FILE
option for overwriting a file. The readline
command requires a variable name as argument in which the line will be
stored.
NOTE: hush feels like a normal Unix shell, but it cannot calculate by itself, i.e. $(($A/2)) won’t work. Calculation can however be done with let - evaluate arithmetic expressions:
A=10
let B=$A/2
echo $B