Método 1
Una variable declarada como de sólo lectura no puede ser modificada en el proceso en curso. Sin embargo, si la variable es exportada a un shell hijo, podrá ser modificada.
#!/bin/bash
if [ "$PROC_PID" != "$PPID" ]; then
export PROC_PID=$$
var="mype"
echo "initial $var"
declare -r var
export var
$0 & # proceso hijo
else
echo "antes $var"
var="lami20j"
echo "despues $var"
fi
Método 2
Otra método consiste en utilizar una “
indirección” o “
referencia indirecta ” (
ver “man bash” para mayor información).
# Declaración de variable de solo lectura
$ readonly Z="Y"
$ echo $Z
Y
# Prueba de eliminacion
$ unset Z
-l: unset: Z: cannot unset: readonly variable
# Prueba de reemplazo
$ Z=W
-l: Z: readonly variable
# Declaracion de una variable indirecta
$ Y=W
$ echo "$Y"
W
# Referencia indirecta de la variable
$ echo "${!Z}"
W
$
Véase también
Comunidad de asistencia y consejos.
El artículo original fue escrito por
lami20j. Traducido por
Carlos-vialfa.