Bash changer la valeur d'une variable
Résolu
Bonjour,
en faite j'ai declaré une variable en lecture seule et la je voudrais changer la valeur de cette variable mais j'arrive pas a enlever le mode de lecture
quelqu'un pourrait me dire comment on fais svp?
en faite j'ai declaré une variable en lecture seule et la je voudrais changer la valeur de cette variable mais j'arrive pas a enlever le mode de lecture
quelqu'un pourrait me dire comment on fais svp?
12 réponses
-
ModérateurSalut,
Extrait du man bash :readonly [-afp] [nom ...] Les noms indiqués reçoivent un attribut lecture-seule. Les valeurs affectées à ces noms ne pourront plus être modifiées.;-((
-
:(((
merci... quand meme -
ModérateurSalut,
à savoir que la variable ne peux pas être modifier dans le processus en cours.
en revanche si la variable est exporté dans un shell fils elle pourra être modifiée -
comment je dois faire pour l'exporter ds un shell fils stp ?
-
ModérateurSalut,
lami20j@debian:~/trash$ cat ccm.sh #!/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 lami20j@debian:~/trash$ ./ccm.sh initial mype avant mype après lami20j
-
merci
-
ModérateurEn moins joli que la solution à "lami20j", mais tout aussi efficace :
[tmpfs]$ readonly Z="Y" [tmpfs]$ echo $Z Y [tmpfs]$ unset Z -l: unset: Z: cannot unset: readonly variable [tmpfs]$ Z=W -l: Z: readonly variable [tmpfs]$ Y=W [tmpfs]$ echo "$Y" W [tmpfs]$ echo "${!Z}" W [tmpfs]$;-))
-
-
Modérateur@lami20jEn général c'est celui qui dit qui fait ! Merci ;-))
PS. Et comme t'as donné la 1ère solution, tu colles ta tienne juste avant ma mienne ;-)))
-
-
ModérateurJe viens de l'écrire, je vois que dans BASH il y a 12 astuces mais celle que je viens d'écrire n'apparaît pas :-((
-
Modérateur
-
ModérateurBon je vois qu'il y a 13 astuces de déclarer mais toujours pas de traces de ton intervention ;-((
Heureusement qu'elle ne faisait pas 10 pages ;-DD
Y'a quelques problèmes actuellement à ce que j'ai vu... faut attendre que ça se tasse ;-)
-
Modérateur13 peut être puisque j'ai fait un retour en arrière et l'astuce sera en double ?!!!!!
-
ModérateurPas grave on demandera la suppression et une punition ;-DD