Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#26 Le 28/02/2021, à 00:09

Watael

Re : [Résolu] parenthèses et accolades

Hizoka a écrit :

Ca commence à faire beaucoup de cas...

mais c'est toujours des Remplacements de paramètres

reste que pour un affichage simple, les accolades autour des noms de variables sont inutiles.

Dernière modification par Watael (Le 28/02/2021, à 00:13)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#27 Le 28/02/2021, à 01:00

Tawal

Re : [Résolu] parenthèses et accolades

Pour revenir au sujet du post #1

(cmd1; cmd2; cmd3) est un groupe de commandes ---> s'effectue dans un sous-shell
{ cmd1; cmd2; cmd3; } est un bloc de commandes ---> s'effectue dans le shell courant

On pourrait apparenter le bloc de commande à une fonction sans nom sauf que les variables déclarées/affectées dans le bloc ne sont pas locales au bloc.

Edit: De plus

$ type {
{ est un mot-clé du shell

d'où l'espace après le { ouvrant. (espace ou retour à la ligne)

$ type }
} est un mot-clé du shell

Même principe, d'où le ;[espace] avant le } fermant.

/!\  Le { et le } ne sont pas des mots clés dans les substitutions, remplacements ....

Dernière modification par Tawal (Le 28/02/2021, à 01:24)


Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#28 Le 28/02/2021, à 02:05

Watael

Re : [Résolu] parenthèses et accolades

On pourrait apparenter le bloc de commande à une fonction sans nom sauf que les variables déclarées/affectées dans le bloc ne sont pas locales au bloc.

on peut faire des fonctions "en sous-shell" :

maFonction() (varLocale="ma var"; : ...)

la seule différence entre des commandes dans un sous-shell (entre parenthèses) et une Liste de commandes (entre accolades), c'est le contexte d'exécution.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#29 Le 28/02/2021, à 09:34

Tawal

Re : [Résolu] parenthèses et accolades

Thanks a lot.
J'apprends quelque chose là wink


Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#30 Le 28/02/2021, à 16:36

ar barzh paour

Re : [Résolu] parenthèses et accolades

j'adore
d'un rien on fait plein de choses


PC          : B760M DS3H DDR4,  12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 22.04, 22.04, 23.04
Portable1 : Intel(R) Core(TM)2 Duo CPU     T6570  @ 2.10GHz RAM 4GiB DDR2 667 MHz Ubuntu 23.04 ( en voyage )
Portable2 : T5750  @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )

Hors ligne

#31 Le 09/03/2021, à 16:52

Totor

Re : [Résolu] parenthèses et accolades

Pour ce qui est des absurdités, je préfère taper sur les Useless Use Of Cat que je vois en permanence car ceux qui les utilisent affiche leur méconnaissance du fonctionnement du shell (et donc du bash)

Watael a écrit :

[...]mais, pour afficher une variable, les accolades sont iiii nuuuu tiiii leuuuuh, yikes
il n'y a pas lieu d'utiliser une quelconque désambiguation.[...]

Tout est une question de point de vue. Perso, je préfère toujours les mettre et j'y vois 2 avantages :
- lisibilité du code
- et de facto, maintenabilité du code


-- Lucid Lynx --

Hors ligne

#32 Le 09/03/2021, à 18:10

Watael

Re : [Résolu] parenthèses et accolades

les accolades ont une utilité. Les mettre systématiquement, c'est perdre le signalement de cette utilité.
en gros, c'est noyer tout ce pourquoi les accolades sont indispensables, c'est reléguer l'exceptionnel au rang de l'ordinaire.
lisibilité ?


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#33 Le 09/03/2021, à 18:30

Hizoka

Re : [Résolu] parenthèses et accolades

Merci Totor big_smile

c'est reléguer l'exceptionnel au rang de l'ordinaire.

Oui, c'est pas faux mais quel est le problème ?
Au final tu es sûr de ne jamais les oublier dans les cas exceptionnels (qui ne le sont pas tant que ça) wink


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#34 Le 09/03/2021, à 18:41

erresse

Re : [Résolu] parenthèses et accolades

Hizoka a écrit :

Oui, c'est pas faux mais quel est le problème ?

Mais le puuu riiiissss meuuuuh !!!


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#35 Le 09/03/2021, à 19:01

Tawal

Re : [Résolu] parenthèses et accolades

Hizoka a écrit :

les cas exceptionnels (qui ne le sont pas tant que ça)

Cités au #13 par Watael wink

erresse a écrit :
Hizoka a écrit :

Oui, c'est pas faux mais quel est le problème ?

Mais le puuu riiiissss meuuuuh !!!

Oui, mais pas que.
Déjà dans le sens de Watael (ne pas perdre le sens lol)
Et aussi pour une question de nombre de caractères, peu utile dans ce cas précis, mais il me semble que c'est une bonne approche en "programmation" générale, non ?

Au plaisir.

Dernière modification par Tawal (Le 09/03/2021, à 19:03)


Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#36 Le 09/03/2021, à 19:05

Watael

Re : [Résolu] parenthèses et accolades

c'est à opposer à l'argument de la lisibilité.

si on veut privilégier de lisibilité, alors il est raisonnable de modifier l'apparence des variables lorsque leur comportement est modifié.
sinon ... c'est contre-productif, voire i nu ti leuuuh. smile


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#37 Le 09/03/2021, à 19:12

Tawal

Re : [Résolu] parenthèses et accolades

ça m'émeuuuh tous ces cris big_smile


Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#38 Le 11/03/2021, à 11:20

Totor

Re : [Résolu] parenthèses et accolades

Tawal a écrit :
Hizoka a écrit :

les cas exceptionnels (qui ne le sont pas tant que ça)

Cités au #13 par Watael wink

erresse a écrit :
Hizoka a écrit :

Oui, c'est pas faux mais quel est le problème ?

Mais le puuu riiiissss meuuuuh !!!

Oui, mais pas que.
Déjà dans le sens de Watael (ne pas perdre le sens lol)
Et aussi pour une question de nombre de caractères, peu utile dans ce cas précis, mais il me semble que c'est une bonne approche en "programmation" générale, non ?

Au plaisir.

La lisibilité et la maintenabilité font partie d' une bonne approche de la "programmation" générale.
Toujours les mettre, c'est éviter les oublis et s'abstenir de problématiques. Donc pas forcément inutile.
Question de fond : avez-vous connaissance de la 1ère version du bash (moi non pour être honnête) mais peut-on avoir une vision inversée : ne peut-on pas se dire qu'elles étaient obligatoires à l'origine et qu'elles aient été rendues facultatives pour les fainéants du clavier tongue


-- Lucid Lynx --

Hors ligne

#39 Le 11/03/2021, à 12:44

Tawal

Re : [Résolu] parenthèses et accolades

Si les accolades étaient obligatoires avant, alors je te rejoins sur ce point.

Mais question lisibilité et maintenabilité, je ne vois aucuns avantages.

echo "${variable}"
echo "$variable"

La 2ieme ligne me semble plus lisible, plus claire et plus légère ....


Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#40 Le 11/03/2021, à 13:50

Hizoka

Re : [Résolu] parenthèses et accolades

Pour un simple echo oui mais complique ton echo en y ajoutant du texte et d'autres variables et de suite, je trouve ça moins agréable :

echo "L'élément ${Liste[0]} a pour adresse $adresse qui se compose de : ${adresse%/*} + ${adresse##*/}"
echo "L'élément ${Liste[0]} a pour adresse ${adresse} qui se compose de : ${adresse%/*} + ${adresse##*/}"

Ça change quoi une petite paire en rab ? smile
Visuellement, les variables ressortent bien mieux, tu les vois sans même avoir besoin de lire le texte.

Et le jour où tu zappes un espace, tu n'auras pas de problème :

echo "L'élément ${Liste[0]} a pour adresse $adressequi se compose de : ${adresse%/*} + ${adresse##*/}"
echo "L'élément ${Liste[0]} a pour adresse ${adresse}qui se compose de : ${adresse%/*} + ${adresse##*/}"

Dernière modification par Hizoka (Le 11/03/2021, à 13:51)


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#41 Le 11/03/2021, à 14:17

Tawal

Re : [Résolu] parenthèses et accolades

En effet, ça se défend ... sans mode de coloration.

Une question : est-ce que l’interprétation (travail) de bash est la(le) même sur $var que sur ${var} ?


Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#42 Le 11/03/2021, à 14:48

Watael

Re : [Résolu] parenthèses et accolades

Totor a écrit :

ne peut-on pas se dire qu'elles étaient obligatoires à l'origine et qu'elles aient été rendues facultatives pour les fainéants du clavier

Totor a écrit :

Toujours les mettre, c'est éviter les oublis et s'abstenir de problématiques.

la paresse en programmation est une vertu, pas la paresse intellectuelle.

Hizoka a écrit :

Ça change quoi une petite paire en rab ?

ça me fait perdre un temps précieux : avec toutes les accolades que je n'ai pas tapées, j'ai le temps de venir vous signaler une pratique incohérente.

Tawal a écrit :

est-ce que l’interprétation (travail) de bash est la(le) même sur $var que sur ${var} ?

est-ce que, comme moi, il perdrait du temps à chercher une substitution (indiquée par les accolades) quand il n'y en a pas ?
j'aimerais bien, mais je crois que non. sad


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#43 Le 11/03/2021, à 15:12

Tawal

Re : [Résolu] parenthèses et accolades

Watael a écrit :

j'aimerais bien, mais je crois que non.

Donc ce n'est vraiment qu'une question de mise en forme visuelle.
Mais je reste sur le coté utile des accolades.

echo "$variable  ${variable#?} ${#variable}"

echo "${variable} ${variable#?} ${#variable}"

Comme le dit Watael, dans la 2ieme ligne, je dois me poser la question de substitution à chaque nom de variable.
Tandis que dans la 1ère, à chaque nom avec accolade, je sais qu'il y a substitution.
Mon goût va vers cette couleur lol


Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#44 Le 11/03/2021, à 17:10

erresse

Re : [Résolu] parenthèses et accolades

Bon, pour finir, si on disait que chacun fait avec ses préférences et que le résultat du code est équivalent ?
Il y a de bons arguments d'un côté comme de l'autre quant à la lisibilité du code. Si on se dit que la plupart du temps, ce code sera relu et maintenu par la même personne qui l'a écrit initialement, alors à cette personne de choisir de quelle manière elle préfère écrire ses variables et basta !!!
cool


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#45 Le 11/03/2021, à 18:42

Tawal

Re : [Résolu] parenthèses et accolades

+1


Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne