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?

12 réponses

  1. Modérateur
    Pas grave on demandera la suppression et une punition ;-DD
    1. Modérateur
      13 peut être puisque j'ai fait un retour en arrière et l'astuce sera en double ?!!!!!
      1. Modérateur
        Bon 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 ;-)
        1. Modérateur
          Je 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 :-((
          1. Modérateur
            En 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]$
            ;-))
            1. Modérateur
              Salut,

              tu pourras écrire dans la FAQ?!
              tu sais que je suis paresseux ;-)
            2. 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 ;-)))
          2. Modérateur
            Salut,

            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
            

            1. Modérateur
              Salut,

              à 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
              1. Modérateur
                Salut,

                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.
                ;-((