0
Merci

Quelques mots de remerciements seront grandement appréciés.

Modifier une variable en lecture seule


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

$
0
Merci

Quelques mots de remerciements seront grandement appréciés.

Cet article est régulièrement mis à jour par des experts sous la
direction de Jean-François Pillou, fondateur de CommentCaMarche
et directeur délégué au développement numérique du groupe Figaro.

Publié par . Dernière mise à jour le par christelle.b.

Ce document intitulé «  Modifier une variable en lecture seule  » issu de CommentCaMarche (https://www.commentcamarche.net/) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

2 Commentaires