- 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 Pierre Alain B. . Évalué à 1.
- 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 NeoX . Évalué à 2.
car d'apres http://pwet.fr/man/linux/commandes/bash
devrait le faire.
[^] # Re: Erreur
Posté par xusnet . Évalué à 1.
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 NeoX . Évalué à 1.
je ne vois pas vraiment la difference entre avec et sans le let
[^] # pour les subsitutions ?
Posté par Phig . Évalué à 4.
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 NeoX . Évalué à 1.
merci Phig pour l'explication.
[^] # Re: pour les subsitutions ?
Posté par Obsidian . Évalué à 3.
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.