Як і в мовах високого рівня, окремі частини сценаріїв можна записувати у вигляді функцій. Формат визначення функції такий:
func() {
<оператори>
}
Виклик функції, якій передаються параметри param1, param2, param3 :
func param1 param2 param3
Можна також передати параметри у вигляді одного рядка, наприклад, $@. Функція може інтерпретувати параметри за тими же принципами, за якими виконується інтерпретація позиційних параметрів, що передаються сценарію оболонки. Наприклад, для обчислення виразу

можна використати дві функції:
#! /bin/ bash
a = 9
b = 5
c = 7
d = 2
calc1() {
let y= ($a+$b) /$1
echo “Result is $y”
}
calc2() {
let y = ($a+$b)*$1
echo “Result is $y”
}
echo “input x”
read x
if[ $x - eq 5 ]
then calc1 c
else calc2 d
fi