#26 Le 27/02/2021, à 23:09
- Watael
Re : [Résolu] parenthèses et accolades
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 27/02/2021, à 23:13)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#27 Le 28/02/2021, à 00: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, à 00: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, à 01: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, à 08:34
- Tawal
Re : [Résolu] parenthèses et accolades
Thanks a lot.
J'apprends quelque chose là
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, à 15: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 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( 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, à 15: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)
[...]mais, pour afficher une variable, les accolades sont iiii nuuuu tiiii leuuuuh,
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, à 17: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, à 17:30
- Hizoka
Re : [Résolu] parenthèses et accolades
Merci Totor
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)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#34 Le 09/03/2021, à 17:41
- erresse
Re : [Résolu] parenthèses et accolades
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 le problème solutionné, 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, à 18:01
- Tawal
Re : [Résolu] parenthèses et accolades
les cas exceptionnels (qui ne le sont pas tant que ça)
Cités au #13 par Watael
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 )
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, à 18: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, à 18: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.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#37 Le 09/03/2021, à 18:12
- Tawal
Re : [Résolu] parenthèses et accolades
ça m'émeuuuh tous ces cris
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, à 10:20
- Totor
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
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 )
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
-- Lucid Lynx --
Hors ligne
#39 Le 11/03/2021, à 11: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, à 12: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 ?
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, à 12:51)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#41 Le 11/03/2021, à 13: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, à 13:48
- Watael
Re : [Résolu] parenthèses et accolades
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
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.
Ç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.
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.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#43 Le 11/03/2021, à 14:12
- Tawal
Re : [Résolu] parenthèses et accolades
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
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, à 16: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 !!!
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 le problème solutionné, 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, à 17: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