Para poder construir programas más complejos, necesitaremos estructuras de control que nos permitan cuestionar y tomar decisiones, controlar la repetición de ciclos y, por último, interaccionar con el usuario.
El shell nos permite esto de una manera eficiente, de forma que realmente podemos construir programas de gran funcionalidad sin recurrir a un lenguaje de programación de alto nivel, salvo para tareas muy específicas.