Léa-Linux & amis :   LinuxFR   GCU-Squad   Zarb.Org   GNU
Archive de la liste aide - [Aide] problème avec une fonction dans un script bash
Merci pour tes éclaircissements également, car en passant par help,  
j'ai trouvé les commandes de recherches du man ( en général quand ils  
sont plus courts, je les lis intégralement). J'ai donc trouvé les  
commandes de recherches, mon seul souci, c'est que je n'ai pas compris  
les réponses.
Avec tes explications, elles me paraissent tout de suite plus "en français".

Le script fonctionne très bien, je le mets en pièce jointe et je reste  
preneur de conseils.
Dans le cas présent, la relève se fait dans une cantine. Mais le  
protocole KNX peut fonctionner ailleurs (dans ma maison par exemple  
pour allumer la lumière). La syntaxe reste la même, seul le type de  
valeur va changer.

Sinon pour les groupes de nombres récupérés, en fait, ils constituent  
un seul nombre 55 AE vaut 55AE soit 21934Wh par exemple.

Encore merci pour les explications.
Benoit

----------------message d'origine-----------------
De: Peko [papa.papa.echo at gmail.com ]
Pour: "Liste d'entraide du site http://www.lea-linux.org"  
[aide at lea-linux.org ]
Date: Sun, 24 Jan 2016 23:28:56 +0100
----------------------------------------------------------
>
>
> Merci pour tes éclaicissements Benoit,
> et pour ta proposition de m'électriser. ;-)
>
> Premier point:
>
>> je ne comprends pas la présence du 0x et des doubles parenthèses.
>
>> Pour le man, je l'ai parcouru plus que lu car il est relativement long :)
>
> Et bien justement, Benoit, en suivant mon conseil de lire Bash, tu  
> aurais trouvé tout seul la réponse à ton interrogation sur "0x".
>
> En lisant le manuel par [man bash], au lieu de tout avoir à lire, il  
> faut se servir des fonctions de recherche de caractères dans une  
> page affichée du manuel.
>
> Quand on est dans une page du manuel, on peut rechercher un mot :
> - en tapant le caractère "/" (division ou "slash")
> - puis en tapant le mot cherché
>
> Nous pouvons poursuivre la recherche après la première occurence  
> trouvée en tapant la lettre "n" minuscule comme NEXT, et au  
> contraire chercher en arrière avec la lettre "N" majuscule  
> (l'occurence précédente.
>
> En réalité, tu as accès à ces informations en tapant "h" comme HELP  
> dans une page du manuel, ce qui affiche en réalité l'aide du  
> programme [less] qui est utilisé la plupart du temps comme outil  
> d'affichage des pages du manuel.
>
> Autre commande de [less] lettre "g" minuscule repositionne en début  
> de manuel, "G" majuscule en fin.
>
> Moralité: chercher l'information dans le manuel, c'est possible, et rapide.
>
> Et penser que ne pas lire le manuel est une bonne chose est en  
> réalité une erreur.
>
> Tu trouveras ceci en cherchant "0x" dans la page du manuel de [bash]:
>
> Les constantes commençant par 0 sont interprétées comme des nombres  
> octaux. Un en-tête 0x ou 0X indique une valeur hexa‐décimale. Sinon,  
> les nombres ont la forme [base#]n où la base facultative est un  
> nombre décimal entre 2 et 64 représentant la base arithmétique et n  
> est un nombre exprimé dans cette base. Si la base# est omise, la  
> base 10 est utilisée. Les chiffres supérieurs à 9 sont représentés  
> par les lettres minuscules, les lettres majuscules, le @ et le _,  
> dans cet ordre. Si la base est inférieure ou égale à 36 les  
> minuscules et les majuscules sont interchangeables pour représenter  
> les nombres entre 10 et 35.
>
> Ensuite, en cherchant de même, tu trouveras:
>
> Développement arithmétique
> Le développement arithmétique permet de remplacer une expression  
> arithmétique par le résultat de son évaluation. Le format du  
> développement arithmétique est : $((expression))
>
> Attention $((expression)) est différent de $(commande)
>
> Donc en décomposant: echo $((0x${ecl_pub_11##* }))
>
> echo va afficher ce qui suit,
>
> ce qui suit l'ensemble veut dire $(( 0x${ecl_pub_11##* } ))
>
> donc veut dire développer l'expression arithmétique 0x${ecl_pub_11##* }
>
> Qui indique donc: ceci est un nombre en haxadécimal (commence par  
> 0x) dont ce qui suit 0x est le texte représentant le nombre en  
> hexadecimal, donc ${ecl_pub_11##* }
>
> ${ecl_pub_11##* }
>
> [man bash] et rechercher ## :
>
> ${paramètre##mot}
> Retrait du motif correspondant au préfixe. Le mot est développé pour  
> fournir un motif, comme dans le développement des chemins. Si le  
> motif correspond au début de la valeur du paramètre, alors le  
> développement prend la valeurdéveloppée du paramètre après  
> suppression du plus court (cas « # ») ou du plus long (cas « ## »)  
> motif correspondant. Si le paramètre est @ ou *, l'opération de  
> suppression de motif est appliquée à chaque paramètre positionnel  
> tour à tour et le développement est la liste résultante. Si le  
> paramètre est une variable tableau indicée par @ ou *, l'opération  
> de suppression de motif est appliquée à chaque élément du tableau  
> tour à tour et le développement est la liste résultante.
>
> donc ${ecl_pub_11##* }
>
> veut dire: dans la variable [ecl_pub_11], supprimer le préfixe le  
> plus long possible se composant de n'importe quel caractère  
> (caractère étoile ou astérique) qui finit par un caractère espace.
>
> Voilà.
>
> __P
>

__________________________________________________
Benoit SZCZYGIEL
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lea-linux.org/pipermail/aide/attachments/20160124/b6009740/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: releve.sh
Type: application/x-sh
Size: 5766 bytes
Desc: not available
URL: <http://lists.lea-linux.org/pipermail/aide/attachments/20160124/b6009740/attachment-0001.sh>

Serveur hébergé par ST-Hebergement et Lost-Oasis / IRC hébergé par FreeNode / NS secondaire hébergé par XName
Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons