Qu'est-ce qui est préférable ?

Dans certains scripts bash, je vois que les variables sont déclarées, tandis que dans d’autres, elles sont appliquées directement, sans déclaration préalable.

unUser="toto" id ${unUser} > ...
De plus, à l’application, des fois elles sont de la forme ${variable}, tandis que d’autres fois, les { } sont absentes.
Votre avis ?

Salut,
(je reconnais ces 2 lignes :wink:)
1er point :
les shells sont assez permissistes et en cela la déclaration des variables n’est pas une obligation mais cela permet :

  • d’initialiser (ou de réinitialiser) les variables et donc de s’assurer de leur valeur (en fonction de la portée et/ou des cycles d’exécution en cas de boucle/récurrence)
  • de prévenir des erreurs en cas d’utilisation de l’option -u (de bash)

de même, le typage à la déclaration n’est pas une obligation mais le fait de l’utiliser permet une certaine rigueur lors de leur utilisation au sein du script.

2nd point :
les {} permettent juste de délimiter le nom des variables.
Si l’on prend comme exemple les variables nommées toto et toto_ et que l’on souhaite afficher uniquement la valeur de la variable “toto” immédiatement suivi d’un _ :

toto=1
toto_=2
echo $toto_
echo ${toto}_

le 1er echo affichera “2” alors que le 2nd affichera “1_”

les {} ne sont donc pas une obligation (sauf lors de l’utilisation des différentes expansions ou de la manipulation de tableau) mais dans de très rares cas, cela peut être utile.

pour ma part, je considère que c’est une bonne pratique (l’emploie permanent des {}) car l’identification des variables est facilitée.

Je suis du même avis mais je voulais confirmation.
Je ne programme plus depuis ~ 20 ans mais je me souviens encore un tout petit peu de Pascal et de C, où les règles étaient strictes.
Comme je ne sais pas trop quoi faire en ce moment, même pas de bugs à corriger :unamused: , je m’initie un peu à) Bash.
Des tutos, j’en ai vu pas mal et suffisants pour apprendre mais ce que je chercherais, si quelqu’un avait, c’est une liste “claire et pratique” des arguments. Le man ? oui, bien sûr mais comme praticité, on fait mieux.
Ce que j’aimerais, c’est une sorte de tableau avec en 1ère colonne, ce que l’on veut faire (ordre alphabétique de préférence) et en seconde, l’argument.
Tu me diras que je peux facilement le faire à la mano … je suis d’origine Corse :wink:

EDIT :
En complément des question originelles :
then
sur la même ligne après ';'
ou sur une ligne en dessous ?
Je préfère en dessous, pour ma part.

j’opte également pour la version “2 lignes” mais je pense qu’il s’agit plus par habitude que pour une réelle raison si ce n’est que l’oubli du ; est vite arrivé.

sinon, qu’entends-tu par liste “claire et pratique” des arguments Arguments de quoi ? toutes les commandes bash ?

ma “source” est exclusivement le man. beaucoup consultent l’Advance Bash Scripting mais il n’est plus (ou guère) maintenu et certaines informations sont devenues dépréciées.

Ben pour moi, les arguments ce sont ces trucs courts d’une lettre précédée d’un tiret.
-n
-e
etc.

Je n’ai pas le niveau pour répondre à tes questions, mais dès que j’ai un moment j’étudie

siteduzero.com/tutoriel-3-96 … shell.html

un fichier en pdf
ftp://ftp-developpez.com/eric-sanchis/IntroProgBash.pdf

:006

Merci mais j’ai la réponse, seulement, je voudrais un tableau pratique.
On peut tout avoir ici :
http://abs.traduc.org/abs-fr/index.html
et de façon plus basique, là :
http://www.siteduzero.com/tutoriel-3-105678-introduction-aux-scripts-shell.html
ou encore dans le man.

[quote=“ricardo”]Ben pour moi, les arguments ce sont ces trucs courts d’une lettre précédée d’un tiret.
-n
-e
etc.[/quote]
Je comprends bien !
mais, quel est le périmètre ?
les options de cut, xargs, sed, awk, paste, ps, ls, merge, date, cat, tac, head, tail, …etc et de bash ou uniquement de bash ?

car ce sont 2 choses différentes…
De plus, cela me parait fastidieux car ces options dépendent de la version des outils. Il est donc extrêmement difficile d’avoir une telle liste.

Cela dit, on peut déjà commencer par un début : lister une description de toutes les commandes (sections 1 et 8) dont tu disposes :

[code]{ man -k -s 1 ‘.’; man -s 8 '.’; }|sort

ou son équivalent directement avec apropos

{ apropos -s 1 -w ‘’; apropos -s 8 -w '’; } |sort[/code]

Ensuite, pour avoir la partie ‘OPTIONS’ de chaque manual, c’est déjà plus chaud !

Ben voilà, ce que je surligne en bleu, c’est exactement la liste de tous ces "trucs’ et leur signification qui m’intéresse.
Bien sûr, je trouve ça au fur et à mesure de mes recherches amis côté ‘pratique’, je préférerais un tableau … si ça existe.

Moi je fais un man puis un /-u (par exemple) pour trouver l’option que je cherche.

Tu as des visualisateurs de pages man graphiques aussi si tu veut.
Des représentation en tableau je n’en ai jamais vu.

@ricardo : oui, c’est bien ce que je craignais…
j’ai commencé à regarder pour générer ce “tableau” à partir des manpages
il y a 1 souci : le paragraphe consacré à la cette description d’options ne s’intitule pas de la même façon suivant les manpages :017

  • parfois, cette liste d’options est renseignée dans la partie SYNOPSIS
  • parfois, la partie OPTIONS est une sous entrée de ARGUMENT
  • parfois, il s’agit bien d’un paragraphe OPTIONS indépendant
  • parfois, ce paragraphe se trouve dans la partie DESCRIPTION
  • etc…

ce n’est donc pas évident de ressortir cette liste :013

Sans compter que cela dépend de la langue utilisée (les locales entre autres)

Merci de votre aide, laissez tomber car c’est en somme très secondaire et en cas de besoin, je fouillerai et c’est tout.
Au fur et à mesure, je me ferai mon propre tableau et ça ira comme ça.
Merci encore.

EDIT :
@ MisterFreez
comment fais-tu concrètement ?

l’editeur par défaut des manpages est vi.
donc pour rechercher un texte, on procède de la même façon que sous vi …
c.a.d : on tape /<texte à rechercher> et le tour est joué

par contre, parfois, il faut échapper des caractères (mettre un \ avant). Pour exemple : [ et ]

edit : pour se déplacer dans les occurences trouvées :
n : occurence suivante
N : occurence précédante

En fait c’est le pager si je ne me trompe pas donc généralement less (en tout cas moi j’utilise less), qui a la même fonction de recherche que vi.

Je n’ai pas essayé avec more, mais ça marche avec less et most (évidement ça marche aussi avec view).

C’est de la recherche de mot dans la page donc ce n’est pas limité aux options.

Oui, mais au départ, il faut bien savoir ce qu’on recherche ?
Il faut entrer quoi ?
$ man bash ???
“concrètement”, deux choses :
1/ savoir à quoi correspond une option qu’on lit sur une ligne, ex ton texte du dessus :
“man -k -s” : que veut dire -k, que veut dire -s ?
Je ne te demande pas la réponse mais la ligne complète pour la trouver.
2/ je veux connaître l’option qui me permettra de demander une réponse à un ‘read’, par exemple, le ‘-p’ un des rares dont je me souviens.
Que fais-je comment faire une recherche :
"M’sieur, s’il vous plait, comment je fais pour que mon script attende une réponse ‘read’"
Si je tape ça, y m’envoie chier, pourtant, chui poli :confused:
Alors quelle ligne va-t-il comprendre ?
Pardonne moi si je suis buté mais pour que je comprenne, il faut toujours qu’on me donne un exemple concret, l’âge, certainement :unamused:

En générale c’est assez souvent j’utilise soit la page de manuel que j’épluche de fond en comble avec “most” et de belles couleur :083

Sinon en gtk il y a tkman, http://packages.debian.org/fr/sid/man-browser, et apparemment konqueror peut aussi le faire ( reste à installer toute la documentation.

Et en dernier lieu sur la toile les pages de manuel sont accessible par exemple :

http://pwet.fr/man/linux/

http://man.developpez.com/
http://www.linux-france.org/article/man-fr/man1/Index-1.html
http://unixhelp.ed.ac.uk/

En générale toute les options sont documentés et parfois nous amène à des occurrences dans d’autres commandes.

Merci, j’épluche ça ce soir ou demain.

[quote=“ricardo”]Oui, mais au départ, il faut bien savoir ce qu’on recherche ?
Il faut entrer quoi ?
$ man bash ???[/quote]
Là tu ne parle pas des options mais des commandes, tu veut savoir quel commande utiliser pour faire tel ou tel chose. Pour ça j’avais commencé à faire ça : wiki.debian.org/fr/CommandsCLI

[quote=“ricardo”]“concrètement”, deux choses :
1/ savoir à quoi correspond une option qu’on lit sur une ligne, ex ton texte du dessus :
“man -k -s” : que veut dire -k, que veut dire -s ?
Je ne te demande pas la réponse mais la ligne complète pour la trouver.[/quote]

si man t’envoie une erreur il est possible que ce soit une commande builtin, c’est à dire que c’est une commande interne au shell pour le vérifier :

et si c’est le cas

puis tu recherche la commande avec

[quote=“ricardo”]2/ je veux connaître l’option qui me permettra de demander une réponse à un ‘read’, par exemple, le ‘-p’ un des rares dont je me souviens.
Que fais-je comment faire une recherche :
"M’sieur, s’il vous plait, comment je fais pour que mon script attende une réponse ‘read’"
Si je tape ça, y m’envoie chier, pourtant, chui poli :confused:
Alors quelle ligne va-t-il comprendre ?
Pardonne moi si je suis buté mais pour que je comprenne, il faut toujours qu’on me donne un exemple concret, l’âge, certainement :unamused:[/quote]
Alors j’ai pas de shell sous la main donc je te le fais au souvenir.

te donne une erreur. En effet quand tu fais un which readil te dis que c’est une fonction “builtin” donc tu peux faire un man bashet rechercher les occurrences de du mot "read"/readet utiliser n ou N pour aller d’une occurrence à l’autre.

Là où je ne suis pas sûr c’est qu’il existe peut être une commande qui s’appelle dans ce cas le man readfonctionneras, mais si je ne me trompe pas c’est la fonction builtin qui est utilisée en priorité.

Merci Michel, impec, là j’ai fait un grand pas pour les recherches.
Je vais aller faire un tour sur le wiki.
:006

[quote=“Clochette”]En générale c’est assez souvent j’utilise soit la page de manuel que j’épluche de fond en comble avec “most” et de belles couleur :083

Sinon en gtk il y a tkman, http://packages.debian.org/fr/sid/man-browser, et apparemment konqueror peut aussi le faire ( reste à installer toute la documentation.

Et en dernier lieu sur la toile les pages de manuel sont accessible par exemple :

http://pwet.fr/man/linux/

http://man.developpez.com/
http://www.linux-france.org/article/man-fr/man1/Index-1.html
http://unixhelp.ed.ac.uk/

En générale toute les options sont documentés et parfois nous amène à des occurrences dans d’autres commandes.[/quote]

Développer.com et Linux-France : pratiques ==> dans la boîte, merci :006