Oltre alla possibilità di invocare comandi a piacere e di comporre variabili ed utilizzarle, bash possiede anche le strutture di controllo di base per creare veri e propri programmi.
Per prima cosa, il ; consente di inserire su di una riga più di un comando
Inoltre, se si sta inserendo una stringa di più righe o una struttura di controllo che richiede una chiusura, bashcontinua a leggere righe fino alla chiusura della stringa o della struttura.
Ovviamente, se noi inseriamo le stesse cose che scriveremmo da tastiera in un file, questo file diventa un programma, chiamato script di shell, ed aumenterà la potenza del linguaggio
L'unica precauzione sarà che la prima riga del file deve essere #!/bin/bash Tutte le righe che inziano con # sono dei commenti
Il primo costrutto, utile anche direttamente da tastiera, è for <nome variabile> in <lista opzioni separate da spazio> ; do <lista operazioni separate da ; o su più righe> done
E' da notare che il nome della variabile va indicato senza il $ dopo la parola chiave for (non ne vogliamo il valore).
La variabile indicata assumerà di volta in volta il valore di uno degli elementi della lista e potrà venir utilizzata dai comandi che verranno ripetuti
La lista potrà essere scritta in modo esplicito, prodotta dalla bash stessa espandendo un elenco di directory che contenga dei caratteri jolly oppure prodotto da un programma, utilizzando gli apici rovesci (`)