KioskeaKioskeaCommentCaMarcheInscrivez-vous, c'est gratuit !
Vendredi 16 mai 2008 - 07:53:24

Modifier une variable en lecture seule

Thèmes de "Bash"
Modifier une variable en lecture seule lami20j lundi 19 novembre 2007 à 18:47:10 jipicy

Solution 1


Une variable declarée en lecture seule ne peux pas être modifier 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 ample 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

$

 

Autres Astuces dans la catégorie Bash