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 é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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lea-linux.org/pipermail/aide/attachments/20160124/42c3da36/attachment-0001.html>

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