Asignación de valores predeterminados de variables

Anteriormente veíamos la forma de utilizar un valor predeterminado de las variable en ciertos casos. Ahora, además de usar el valor predeterminado, queremos asignarlo a la variable.

Asignación a variable o definida o con valor nulo

En este caso no sólo utilizamos un valor predeterminado, sino que en la misma operación lo asignamos. La expresión que se utiliza para ello es la siguiente:

${variable:=valorpredeterminado}
              

Si el contenido de variable es no nulo, esta expresión devuelve dicho valor. Si el valor es nulo o la variable no está definida entonces el valor de la expresión es valorpredeterminado, el cual será también asignado a la variable variable. Veamos un ejemplo en el que se supone que la variable resultado no está definida:

$ echo ${resultado}
              
$ echo "El resultado es: ${resultado:=0}"
E1 resultado es: 0
$ echo ${resultado}
0
              

A los parámetros posicionales no se le pueden asignar valores utilizando este mecanismo.

Asignación a variable no definida

Análogo al caso anterior para el caso de que la variable no esté definida. La expresión ahora es:

${variable=valorpredeterminado}
              

Mostrar un mensaje de error asociado a una variable

Ahora lo que pretendemos es terminar un script con un mensaje de error asociado al contenido de una variable.

Variable no definida o con valor nulo

En otras ocasiones no interesa utilizar ningún valor por defecto, sino comprobar que la variable está definida y contiene un valor no nulo. En este último caso interesa avisar con un mensaje y que el programa de shell termine. La expresión para hacer esto es:

$ {variable : ?Mensaje }
              

Por ejemplo:

$ res=${resultado:? "variable no válida''}
resultado variable no válida
              

En el caso de que la variable resultado no esté definida o contenga un valor nulo, se mostrará el mensaje especificado en pantalla, y si esta instrucción se ejecuta desde un programa de shell, éste finalizará.

Variable no definida

Análogo al caso anterior para el caso de que la variable no esté definida. La expresión para ello es:

${variable?mensaje}