Modifier une variable en lecture seule
Publié par lami20j, dernière mise à jour ven. 06 nov. 2009 à 13:50:47 par marlalapocket
Solution 1
Une variable déclarée en lecture seule ne peut pas être modifiée dans le processus en cours.
Toutefois, si la variable est exportée dans un shell fils, elle pourra être modifiée.#!/bin/bash
if [ "$PROC_PID" != "$PPID" ]; then
export PROC_PID=$$
var="mype"
echo "initial $var"
declare -r var
export var
$0 & # processus fils
else
echo "avant $var"
var="lami20j"
echo "après $var"
fi
Solution 2
Une autre solution consiste à utiliser une "indirection" ou "développement indirect" (voir "man bash" pour de plus amples renseignements).# Déclaration variable en lecture seule
$ readonly Z="Y"
$ echo $Z
Y
# Essai suppression
$ unset Z
-l: unset: Z: cannot unset: readonly variable
# Essai remplacement
$ Z=W
-l: Z: readonly variable
# Déclaration d'une variable indirecte
$ Y=W
$ echo "$Y"
W
# Développement de la variable avec une indirection
$ echo "${!Z}"
W
$