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.
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