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

        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
          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
          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
            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
              13 peut être puisque j'ai fait un retour en arrière et l'astuce sera en double ?!!!!!