Subject: Trop d'arguments dans mon bash

From: legoss <[email-masked]>
Date: Sun, 24 Jun 2012 04:51:47 -0700 (PDT)

Bonjour à tous,

Je me suis mis au "bash" pour la première fois hier et je suis content de
moi. C'est rare. 
Sous ubuntu j'ai réalisé le fichier bash ci dessous. 
http://lilypond-french-users.1298960.n2.nabble.com/file/n7578151/bash bash 
Pour le lancer: ouvrir la console dans le dossier où vous aurez téléchargé
le fichier, puis saisir: *bash bash* (le premier "bash" pour la commande, le
second pour le fichier)

Je rencontre une anomalie que je résumerai ainsi
Dans les environnements de condition (if... fi), à chaque fois que je fais
appel à une variable contenant *plusieurs* mots, la console me retourne un
message d'erreur du type
*bash: ligne 102 : [: trop d'arguments*
(Aucune anomalie si les variables n'ont qu'un seul mot.)

Je n'arrive pas à résoudre le problème. 
Quelqu'un a-t-il une idée ?

Cordialement,
Laurent

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Trop-d-arguments-dans-mon-bash-tp7578151.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: "[email-masked]" <[email-masked]>
Date: Sun, 24 Jun 2012 14:05:48 +0200

> Quelqu'un a-t-il une idée ?

C'est difficile à savoir où se trouve le problème sans pouvoir voir le script, mais en général les variables ne peuvent pas avoir d'espace.  Donc :

mon variable = 1

ne marche presque jamais.  En revanche,

mon_variable = 1

marche quasiment toujours, et

mon-variable = 1

marche avec certains langages dont l'analyseur syntaxique sait faire la différence entre un tiret et la soustraction.

Cordialement,
~Mike

---

From: legoss <[email-masked]>
Date: Sun, 24 Jun 2012 05:38:21 -0700 (PDT)

Bonjour Mike,

Le script est en pièce jointe. s'il n'apparaît sur ton écran, dis-le moi.
OK pour les variable à 1 chaîne de caractères.

Mais je peux difficilement faire autrement dans la mesure où mes variables
correspondent aux titres et autres commentaires gravées sur la partition.
Tu imagines dans le copyright une mention du style:
"Utilisé_avec_ l'autorisation_de_l'auteur" ?

Peut-être est-ce une mauvaise méthode ou formulation de ma part des
conditions if...fi.
Mais dans l'état de mes connaissances actuelles, j'ai besoin qu'on me fasse
la "courte éshell".

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Trop-d-arguments-dans-mon-bash-tp7578151p7578153.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: Christophe Pochon <[email-masked]>
Date: Sun, 24 Jun 2012 16:41:47 +0200

Salut,

Je crois qu'il suffit de mettre tes arguments entre guillemets pour que par
exemple "Utilisé avec l'autorisation de l'auteur" soit considéré comme un
seul mot.

référence : http://abs.traduc.org/abs-5.0-fr/ch05.html

A+

Christophe Pochon
http://www.christophe-pochon.com

Le 24 juin 2012 14:38, legoss <[email-masked]> a écrit :

> View this message in context:
> http://lilypond-french-users.1298960.n2.nabble.com/Trop-d-arguments-dans-mon-bash-tp7578151p7578153.html
> _______________________________________________
> liste de diffusion lilypond-user-fr
> [email-masked]
> https://lists.gnu.org/mailman/listinfo/lilypond-user-fr
>

---

From: legoss <[email-masked]>
Date: Sun, 24 Jun 2012 10:40:22 -0700 (PDT)

C'est bon !
J'ai rajouté les guillemets en suivant tes conseils :

if [ *"*$variable*"* = "0" ]

Merci à tous les deux !
Laurent

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Trop-d-arguments-dans-mon-bash-tp7578151p7578155.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: "Daniel Bernair" <[email-masked]>
Date: Mon, 25 Jun 2012 11:37:42 +0200

Pourriez-vous en deux mots expliquer ce qu'est le bash ? A part une nouvelle 
application d'encodage quelle est sa fonction ? je ne comprends pas 
suffisamment l'anglais ni ai le temps de lire la doc. Merci
Daniel Bernair
----- Original Message ----- 
From: "legoss" <[email-masked]>
To: <[email-masked]>
Sent: Sunday, June 24, 2012 1:51 PM
Subject: Trop d'arguments dans mon bash

Bonjour à tous,

Cordialement,
Laurent

--
View this message in context: 
http://lilypond-french-users.1298960.n2.nabble.com/Trop-d-arguments-dans-mon-bash-tp7578151.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: "[email-masked]" <[email-masked]>
Date: Mon, 25 Jun 2012 11:46:51 +0200

On 25 juin 2012, at 11:37, Daniel Bernair wrote:

> Pourriez-vous en deux mots expliquer ce qu'est le bash ? A part une nouvelle application d'encodage quelle est sa fonction ? je ne comprends pas suffisamment l'anglais ni ai le temps de lire la doc. Merci
> Daniel Bernair
> ----- Original Message ----- From: "legoss" <[email-masked]>

C'est à la fois un shell et un langage de script qui permet d'exécuter des commandes et lancer des logiciels à partir de la ligne de commande.

~Mike

---

From: bameylan <[email-masked]>
Date: Mon, 25 Jun 2012 02:58:25 -0700 (PDT)

Daniel Bernair wrote
> 
> Pourriez-vous en deux mots expliquer ce qu'est le bash ? 
> 
Bash: Bourne-again shell. Une coquille issue d'Unix  , en d'autres mots: un
interpréteur de commandes. Il fait en gros ça:

- lancer des programmes, copier des fichiers, plus d'autres joyeusetés et
vérifier leur validité
- grouper des commandes dans un fichier qu'on nomme «script»
- il interprète -traduit- ces commandes dans un langage compris par le
système d'exploitation qui l'exécute

Dans le cas présent, le bash va se mettre en mode batch: il lit un fichier
texte fait avec une suite de commandes et l'interprète.

-----
Cordialement

Bernard
--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Trop-d-arguments-dans-mon-bash-tp7578151p7578158.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: "Philippe Neyrat" <[email-masked]>
Date: Mon, 25 Jun 2012 12:46:48 +0200

> Bonjour à tous,

Bonjour !

>  moi. C'est rare. Sous ubuntu j'ai réalisé le fichier bash ci dessous.
>  Pour le lancer: ouvrir la console dans le dossier où vous aurez
> téléchargé le fichier, puis saisir: *bash bash* (le premier "bash" pour la
> commande, le second pour le fichier)
>
>  appel à une variable contenant *plusieurs* mots, la console me retourne
> un message d'erreur du type *bash: ligne 102 : [: trop d'arguments*

J'ai parcouru votre script, et j'ai quelques remarques :
1°) - Que se passe-t-il si vous avez plus de huit strophes ?
      Une structure for serait plus adaptée, du genre :
      combien de strophes ? -> Nbstrophes
      de 1 à Nbstrophes faire :
      lire les paroles de la strophe.
Ce qui vous affranchirait d'un nombre maximal fixé à 8

2°) - De même pour les structures addlyrics, avec tous ces if...elif,
essayez plutôt une boucle for en fonction du nombre de strophes...

3°) - Vos noms de variables ne doivent pas contenir d'espace (qui est un
séparateur). Si vous voulez manipuler des chaînes de caractères contenant
des espaces, ou des caractères spéciaux, mettez un antislash avant, comme
vous l'avez fait en début de fichier :
relative='\\relative', encore que j'aurais plutôt écrit :
relative="\\relative", avec des guillemets...

de même, un nom de fichier peut être :

Nom\ de\ fichier\ contenant\ des\ espaces

Essayez dans une console pour voir les résultats avec \(, \\, etc...

par exemple :
touch Nom\ avec\(parentheses\)
touch Nom\ avec\*autres\$
(attention, avec \\, on crée plusieurs fichiers...)

Ceci ne concerne que les noms de fichiers, les variables ne doivent pas
contenir d'espaces ou de caractères spéciaux, encore moins des caractères
accentués.

Sinon, c'est un bon début pour quelqu'un qui découvre le bash...

Mais ne nommez pas votre fichier "bash", c'est un nom d'interpréteur, et
vous pourriez rencontrer des problèmes...

Cordialement,

Philippe

---

From: "Daniel Bernair" <[email-masked]>
Date: Mon, 25 Jun 2012 14:47:53 +0200

Merci pour vos explications.
Daniel Bernair
----- Original Message ----- 
From: "bameylan" <[email-masked]>
To: <[email-masked]>
Sent: Monday, June 25, 2012 11:58 AM
Subject: Re: Trop d'arguments dans mon bash

Daniel Bernair wrote

-----
Cordialement

Bernard
--
View this message in context: 
http://lilypond-french-users.1298960.n2.nabble.com/Trop-d-arguments-dans-mon-bash-tp7578151p7578158.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: legoss <[email-masked]>
Date: Mon, 25 Jun 2012 07:50:39 -0700 (PDT)

@Phil :
Merci pour tous ces éclaircissements. En effet, j'ai transpiré pas mal sans
les structures for (papier coller à la pelle donc). J'ai aussi galéré pas
mal avec le nom des variables. Il y pas mal de trucs que je n'ai pas compris
et que j'ai fait plus par instinct que par raison. Mais ça va venir... avec
le temps.
Merci encore,
Laurent

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Trop-d-arguments-dans-mon-bash-tp7578151p7578161.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: Daniel Cartron <[email-masked]>
Date: Mon, 25 Jun 2012 17:21:10 +0200

> essayez plutôt une boucle for en fonction du nombre de strophes...

Je plussoie...

> relative="\\relative", avec des guillemets...

double quote, pas guillemet, même en anglais les vrais guillemets 
typographiques sont courbes et non droits, la double quote est normalement 
réservée à la programmation mais dévoyée par l'usage de la machine à écrire 
qui n'avait pas assez de touches pour tout mettre.

> Sinon, c'est un bon début pour quelqu'un qui découvre le bash...

Je plussoie derechef

> vous pourriez rencontrer des problèmes...

la bonne façon de faire est de nommer le fichier lilygenerator par exemple (un 
nom explicite) et de lui donner l'extension .sh, car bien que les extensions 
soient en général inutiles sous linux celle-ci permet de lancer le programme 
plus facilement.

-- 
Cordialement,
Daniel Cartron

---

From: Daniel Cartron <[email-masked]>
Date: Mon, 25 Jun 2012 17:21:41 +0200

Je plussoie...

Je plussoie derechef

-- 
Cordialement,
Daniel Cartron

---

From: legoss <[email-masked]>
Date: Mon, 25 Jun 2012 23:39:43 -0700 (PDT)

Sur les conseils de Phil, j'ai "bidouillé" ce qui suit, pour générer
automatiquement autant d'environnements \addlyrics que nécessaire:

####################

if [ "$ns" = 1 ]
then
echo -e "    $addlyrics {
      
    }"
else
for ((i=1;i<$ns+1;i++))
do 
echo "    $addlyrics {
      \lyricmode { \set stanza = $i.
      
      }
    }"
done
fi

####################

Je ne sais pas si on peut écrire ça plus correctement, mais ça fonctionne.

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Trop-d-arguments-dans-mon-bash-tp7578151p7578166.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.