Uso de valores predeterminados de variables

Además de las asignaciones de valores a variables vista con anterioridad, que consistía en utilizar el operador de asignación (=), podemos asignarle valores dependiendo del estado de la variable.

Uso de variable no definida o con valor nulo

Cuando una variable no está definida, o lo está pero contiene un valor nulo, se puede hacer que se use un valor predeterminado mediante la siguiente la expresión:

$ {variable:-valorpredeterminado}
              

Esta expresión devuelve el contenido de variable si está definida y tiene un valor no nulo. Por ejemplo si la variable resultado inicialmente no esta definida:

$ echo ${resultado}
$ echo "E1 resultado es: {resultado:-0}"
E1 resultado es: O
$ resultado=1
$ echo "E1 resultado es: ${resultado:-0}"
E1 resultado es: 1
              

A los parámetros posicionales podemos acceder como:

{$1: -o}
              

Uso de variable no definida

En algunas ocasiones interesa utilizar un valor predeterminado sólo en el caso de que la variable no esté definida. La expresión que se utiliza para ello es algo diferente de la anterior:

${variable- valorpredeterminado}
              

Consultar el ejmplo anterior.

Uso de variable definida o con valor nulo

Existe una expresión opuesta a la anterior. En este caso, si la variable está definida y contiene un valor no nulo, entonces en vez de usarse dicho valor, se utiliza el que se especifica. En caso contrario, el valor de la expresión es la cadena nula. La expresión para esto es:

$ {variable: +valorpredeterminado}
Por ejemplo:
$ resultado=10
$ echo ${resultado:+5}
5
$ resultado=
$ echo ${resultado:+30}
$
              

Uso de variable no definida

En algunas ocasiones puede también interesar que el comportamiento anterior sólo suceda cuando la variable no esté definida. La expresión para ello es:

$ {variable+valorpredeterminado}