[Bash] Commentaires en milieu de ligne...

12 réponses
Avatar
David BERCOT
Bonjour,

Pour un besoin un peu particulier (je ne vais pas rentrer dans les
d=C3=A9tails sauf si =C3=A7a vous int=C3=A9resse ;-)), je souhaiterais mett=
re des
commentaires au milieu d'une ligne dans un script bash...

Mais j'ai beau chercher, je ne trouve que le # comme caract=C3=A8re indiqua=
nt
que ce qui suit est du commentaire et rien qui indique que ce
commentaire est termin=C3=A9...

D'o=C3=B9 ma question : est-ce qu'il est possible de d=C3=A9limiter un
commentaire dans une ligne de script (d=C3=A9but et fin comme par
exemple /* */ en C) ?

Merci d'avance.

David.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/20120310103825.2a3b90d0@debian-david

10 réponses

1 2
Avatar
Denis Mugnier
Le 10/03/2012 10:38, David BERCOT a écrit :
Bonjour,


Bonjour,
Pour un besoin un peu particulier (je ne vais pas rentrer dans les
détails sauf si ça vous intéresse ;-)), je souhaiterais mettre des
commentaires au milieu d'une ligne dans un script bash...

Mais j'ai beau chercher, je ne trouve que le # comme caractère indiquant
que ce qui suit est du commentaire et rien qui indique que ce
commentaire est terminé...

D'où ma question : est-ce qu'il est possible de délimiter un
commentaire dans une ligne de script (début et fin comme par
exemple /* */ en C) ?



Je ne pense pas que cela soit possible.
Dans le guide de référence de Bash, il est écrit
(:http://tiswww.case.edu/php/chet/bash/bashref.html#SEC14) :
"a word beginning with `#' causes that word and all remaining characters
on that line to be ignored."


Merci d'avance.

David.



Denis

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Mourad Jaber
Le 10/03/2012 10:38, David BERCOT a écrit :
Bonjour,

Pour un besoin un peu particulier (je ne vais pas rentrer dans les
détails sauf si ça vous intéresse ;-)), je souhaiterais mettre des
commentaires au milieu d'une ligne dans un script bash...

Mais j'ai beau chercher, je ne trouve que le # comme caractère indiquant
que ce qui suit est du commentaire et rien qui indique que ce
commentaire est terminé...

D'où ma question : est-ce qu'il est possible de délimiter un
commentaire dans une ligne de script (début et fin comme par
exemple /* */ en C) ?

Merci d'avance.

David.



Je ne pense pas que cela existe en bash, d'où l'intérêt d'éviter les lignes kilométriques
genre illisibles ;)

++

Mourad

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
David BERCOT
Le Sat, 10 Mar 2012 11:32:03 +0100,
Mourad Jaber a écrit :
Le 10/03/2012 10:38, David BERCOT a écrit :
Bonjour,

Pour un besoin un peu particulier (je ne vais pas rentrer dans les
détails sauf si ça vous intéresse ;-)), je souhaiterais m ettre des
commentaires au milieu d'une ligne dans un script bash...

Mais j'ai beau chercher, je ne trouve que le # comme caractère
indiquant que ce qui suit est du commentaire et rien qui indique que
ce commentaire est terminé...

D'où ma question : est-ce qu'il est possible de délimiter un
commentaire dans une ligne de script (début et fin comme par
exemple /* */ en C) ?

Merci d'avance.

David.



Je ne pense pas que cela existe en bash, d'où l'intérêt d' éviter les
lignes kilométriques genre illisibles ;)



Si ça n'existe pas, tant pis, je vais me débrouiller autrement...

Mais justement, mon objectif est bien de ne pas faire de ligne
kilométrique et, pour cela, je souhaite concaténer plusieurs lign es (en
terminant par ). Toutefois, j'aimerais avoir des commentaires avant
chaque ligne à concaténer, et c'est comme ça que ma question est
arrivée. Je crois que je vais devoir faire différemment...

Merci.

David.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
François Allisson
Je ne pense pas que cela existe en bash, d'où l'intérêt d'éviter les
lignes kilométriques genre illisibles ;)


#
# #
# # #
#
#
# J'abonde dans ce sens. On peut néanmoins ten ter
# de pointer sur la ligne comme ça ;)
#
# C'est la seule solution que je vois...
#
# François

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
David BERCOT
Le Sat, 10 Mar 2012 11:49:53 +0100,
François Allisson a écrit :
Je ne pense pas que cela existe en bash, d'où l'intérêt d 'éviter les
lignes kilométriques genre illisibles ;)


#
# #
# # #
#
#
# J'abonde dans ce sens. On peut néanmoins tent er
# de pointer sur la ligne comme ça ;)
#
# C'est la seule solution que je vois...
#
# François



Sachant que mon objectif est de faire :

apt-get install
firmware-linux firmware-linux-nonfree firmware-iwlwifi # Firmwares
linux-headers-amd64 gcc # En-têtes du noyau et compilateur
guessnet resolvconf ifplugd arping proxytunnel # Outils réseau
etc...

je pense qu'avec ta solution, ce n'est pas gagné ;-)

David.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Sylvain L. Sauvage
Le samedi 10 mars 2012 à 12:52:15, David BERCOT a écrit :
[…]
Sachant que mon objectif est de faire :

apt-get install
firmware-linux firmware-linux-nonfree firmware-iwlwifi #
Firmwares linux-headers-amd64 gcc # En-têtes du noyau et
compilateur guessnet resolvconf ifplugd arping proxytunnel
# Outils réseau etc...

je pense qu'avec ta solution, ce n'est pas gagné ;-)



Oui, c’est un problème récurrent.

1. D’abord, pourquoi est-ce que ça ne fonctionne pas.
en fin de ligne quote (inactive) le retour chariot. Avec des
trucs comme 'cmd # bla', le quote l’espace, le retour
chariot est toujours là donc il coupe la commande.
De la même façon, 'cmd # bla ' ne fonctionne pas car le est
dans le commentaire donc lui-même inactif.

2. Une solution propre : couper la commande en plusieurs
morceaux et commenter chaque morceau.

3. Une autre solution propre : mettre un seul gros commentaire
qui reprend la commande.
P.ex.
# apt-get install
# bla bla # truc et muche
# blo blo # bidule
#…
apt-get install
bla bla
blo blo
…

4. Autre solution : insérer une commande qui ne fait rien.
apt-get install
bla bla $(: truc et muche)
blo blo $(: bidule)
…
Fonctionnement : ça exécute ': …' et comme ':' ne fait rien et
n’affiche rien, ça ne change pas la commande principale.

--
Sylvain Sauvage

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
David BERCOT
Le Sat, 10 Mar 2012 13:20:59 +0100,
"Sylvain L. Sauvage" a écrit :
Le samedi 10 mars 2012 à 12:52:15, David BERCOT a écrit :
[…]
Sachant que mon objectif est de faire :

apt-get install
firmware-linux firmware-linux-nonfree firmware-iwlwifi #
Firmwares linux-headers-amd64 gcc # En-têtes du noyau et
compilateur guessnet resolvconf ifplugd arping proxytunnel
# Outils réseau etc...

je pense qu'avec ta solution, ce n'est pas gagné ;-)



Oui, c’est un problème récurrent.

1. D’abord, pourquoi est-ce que ça ne fonctionne pas.
en fin de ligne quote (inactive) le retour chariot. Avec des
trucs comme 'cmd # bla', le quote l’espace, le retour
chariot est toujours là donc il coupe la commande.
De la même façon, 'cmd # bla ' ne fonctionne pas car le est
dans le commentaire donc lui-même inactif.

2. Une solution propre : couper la commande en plusieurs
morceaux et commenter chaque morceau.

3. Une autre solution propre : mettre un seul gros commentaire
qui reprend la commande.
P.ex.
# apt-get install
# bla bla # truc et muche
# blo blo # bidule
#…
apt-get install
bla bla
blo blo
…

4. Autre solution : insérer une commande qui ne fait rien.
apt-get install
bla bla $(: truc et muche)
blo blo $(: bidule)
…
Fonctionnement : ça exécute ': …' et comme ':' ne fait rien et
n’affiche rien, ça ne change pas la commande principale.



Ta première solution (le 2.) revient à ce que je faisais jusqu' à
présent. Sauf que là, il fallait que je valide chaque ligne. Or, je
souhaiterais faire toutes les installations d'un coup.

Ensuite, vu que j'ai une bonne trentaine de lignes, le 3. me semble
difficile (il ne faudrait rien oublier de remettre à chaque fois que je
fais une modification).

En revanche, ta dernière solution (la 4.) me semble tout à fait
intéressante. Je pense que je vais m'orienter vers ça...

Merci et bon week-end.

David.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Denis Mugnier
Le 10/03/2012 12:52, David BERCOT a écrit :
Le Sat, 10 Mar 2012 11:49:53 +0100,
François Allisson a écrit :
Je ne pense pas que cela existe en bash, d'où l'intérêt d'éviter les
lignes kilométriques genre illisibles ;)


#
# #
# # #
#
#
# J'abonde dans ce sens. On peut néanmoins tenter
# de pointer sur la ligne comme ça ;)
#
# C'est la seule solution que je vois...
#
# François


Sachant que mon objectif est de faire :

apt-get install
firmware-linux firmware-linux-nonfree firmware-iwlwifi # Firmwares
linux-headers-amd64 gcc # En-têtes du noyau et compilateur
guessnet resolvconf ifplugd arping proxytunnel # Outils réseau
etc...

je pense qu'avec ta solution, ce n'est pas gagné ;-)

David.



Une piste de solution pourrait être de déclarer des variables :

chaine1 ="firmware-linux firmware-linux-nonfree firmware-iwlwifi" #
Firmwares

chaine2 ="linux-headers-amd64 gcc" #En-têtes du noyau et compilateur

etc


puis ensuite
apt-get install $chaine1 $chaine2 ... etc


Denis

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Mourad Jaber
Le 10/03/2012 13:14, Denis Mugnier a écrit :
Le 10/03/2012 12:52, David BERCOT a écrit :
Le Sat, 10 Mar 2012 11:49:53 +0100,
François Allisson a écrit :
Je ne pense pas que cela existe en bash, d'où l'intérêt d'éviter les
lignes kilométriques genre illisibles ;)


#
# #
# # #
#
#
# J'abonde dans ce sens. On peut néanmoins tenter
# de pointer sur la ligne comme ça ;)
#
# C'est la seule solution que je vois...
#
# François


Sachant que mon objectif est de faire :

apt-get install
firmware-linux firmware-linux-nonfree firmware-iwlwifi # Firmwares
linux-headers-amd64 gcc # En-têtes du noyau et compilateur
guessnet resolvconf ifplugd arping proxytunnel # Outils réseau
etc...

je pense qu'avec ta solution, ce n'est pas gagné ;-)

David.



Une piste de solution pourrait être de déclarer des variables :

chaine1 ="firmware-linux firmware-linux-nonfree firmware-iwlwifi" # Firmwares

chaine2 ="linux-headers-amd64 gcc" #En-têtes du noyau et compilateur

etc


puis ensuite
apt-get install $chaine1 $chaine2 ... etc


Denis



Perso, c'est le genre de solution que je prèfére utiliser au lieu du ça permet d'inserer
tout plein de commentaire et surtout de stocker ces infos en début de script pour
modification ultérieurs ;)

++

Mourad

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Stephane Chazelas
2012-03-10 12:52:15 +0100, David BERCOT:
Le Sat, 10 Mar 2012 11:49:53 +0100,
François Allisson a écrit :
>> Je ne pense pas que cela existe en bash, d'où l'intérêt d'éviter les
>> lignes kilométriques genre illisibles ;)
> #
> # #
> # # #
> #
> #
> # J'abonde dans ce sens. On peut néanmoins tenter
> # de pointer sur la ligne comme ça ;)
> #
> # C'est la seule solution que je vois...
> #
> # François

Sachant que mon objectif est de faire :

apt-get install
firmware-linux firmware-linux-nonfree firmware-iwlwifi # Firmwares
linux-headers-amd64 gcc # En-têtes du noyau et compilateur
guessnet resolvconf ifplugd arping proxytunnel # Outils réseau
etc...

je pense qu'avec ta solution, ce n'est pas gagné ;-)


[...]

packages=(
firmware-linux firmware-linux-nonfree firmware-iwlwifi # Firmwares
linux-headers-amd64 gcc # En-têtes du noyau et compilateur
guessnet resolvconf ifplugd arping proxytunnel # Outils réseau
)
apt-get install "${packages[@]}"

Ou, sans recourir a des specificités bash:

sed 's/#.*//' << EOF | xargs apt-get install
firmware-linux firmware-linux-nonfree firmware-iwlwifi # Firmwares
linux-headers-amd64 gcc # En-têtes du noyau et compilateur
guessnet resolvconf ifplugd arping proxytunnel # Outils réseau
EOF

--
Stephane

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
1 2