Todos utilizamos variables de tipo constantes en nuestros shell scripts, que en principio no son modificables pues están en el código, un ejemplo simple:
#!/bin/bash
HOLA="Hola, soy el script"
echo $HOLA
así en cada ejecución de este script se mostrará el contenido de la variable HOLA:
$ ./hola
hola soy el script
$
Pero al definir/crear la variable podemos hacerlo con un contenido por defecto, que se usa en caso que la variable no tenga otro valor, mediante esta sintaxis de definición:
HOLA=${HOLA:-"Hola, soy el script"}
de esta forma HOLA tomará el valor que ya traiga o, en caso de ser nula, asignará el string indicado luego del :-
Esta sintaxis para la definición de las variables en nuestros script permite que se le pueda cambiar el valor al invocar el script, así:
$ HOLA="Hola, soy el shell" ./hola
Hola, soy el shell
$
También esta sintaxis de valor por defecto de las variables puede ser asignado directamente al invocarlas, utilizando una sintaxis equivalente:
#!/bin/bash
echo ${HOLA:-"Hola, soy el script"}
lo que simplifica el script, aunque puede distribuir los valores de las variables a lo largo y ancho del código así que a usarlo con cuidado.
Obviamente es algo muy documentado y explicado, aquí unos ejemplos: