Forum Programmation.autre BASH : fonction 'let'

Posté par  .
Étiquettes : aucune
0
28
août
2007
Petit comportement que je m'explique mal sur une XUbuntu 6.06 :
- en console sous Bash (3.2.17)
J'obtiens bien un nombre aléatoire

- si j'exécute dans la même console, sans modif de l'environnement, le script suivant :
#!/bin/bash
let "essai=$RANDOM"
echo $essai


J'obtiens : script.sh line 2 : let : not found
et bien sûr ça ne marche pas !

Sur les sites que j'ai consulté, le problème provenait d'un mauvais choix du shell avec une erreur dans la première ligne du script... Mais là ?

Si quelqu'un a une idée, il gagnerait toute ma gratitude.

Bonne soirée
PAB
  • # Erreur

    Posté par  . Évalué à 1.

    Evidemment, je me suis planté ! Pour le premier tiret, il faut lire :

    - en console sous Bash (3.2.17)
    si je tape
    $ let "essai=$RANDOM"
    $ echo $essai
    J'obtiens bien un nombre aléatoire.
    • [^] # Re: Erreur

      Posté par  . Évalué à 2.

      que ferait let ?

      car d'apres http://pwet.fr/man/linux/commandes/bash

      essai=$RANDOM
      echo $essai


      devrait le faire.
    • [^] # Re: Erreur

      Posté par  . Évalué à 1.

      fait set | grep RANDOM

      ou encore let "essai=$RANDOM"; echo $essai

      cela revient au meme.

      regarde ce que c'est RANDOM par la commande man random


      man est mon meilleur ami
      • [^] # Re: Erreur

        Posté par  . Évalué à 1.


        neox@amd64-full-linux:~$ let "essai=$RANDOM";echo $essai
        13697

        neox@amd64-full-linux:~$ set | grep RANDOM
        RANDOM=13697

        neox@amd64-full-linux:~$ essai=$RANDOM;echo $essai
        4270

        neox@amd64-full-linux:~$ set | grep RANDOM
        RANDOM=4270

        neox@amd64-full-linux:~$ bash --version
        GNU bash, version 3.2.13(1)-release (i486-pc-linux-gnu)
        Copyright © 2005 Free Software Foundation, Inc.
        neox@amd64-full-linux:~$



        je ne vois pas vraiment la difference entre avec et sans le let
        • [^] # pour les subsitutions ?

          Posté par  . Évalué à 4.

          Un exemple d'utilisation de let :

          phi@loulou:~$ VAR=NOM
          phi@loulou:~$ echo $VAR
          NOM
          phi@loulou:~$ $VAR=3
          bash: NOM=3: command not found
          phi@loulou:~$ let $VAR=3
          phi@loulou:~$ echo $NOM
          3

          Je ne prétends pas que ce soit le plus intelligent, mais je me souviens de m'en être servi un jour ...
          • [^] # Re: pour les subsitutions ?

            Posté par  . Évalué à 1.

            Je comprend mieux, meme si je ne vois pas l'interet.

            merci Phig pour l'explication.
            • [^] # Re: pour les subsitutions ?

              Posté par  . Évalué à 3.

              "Let" permet d'une manière générale d'ordonner l'affectation d'une variable dans tous les cas où la forme raccourcie est ambigüe.

              En principe, le shell développe les variables et procède à leur affection pendant la même étape, avant évaluation de l'expression ainsi formée. "let" permet ici la réinterprétation d'une expression déjà construite.

              Dans le cas présent, ça permet par exemple de passer le nom de la variable à affecter dans les paramètres d'un script.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.