Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[HS] script bash

12 réponses
Avatar
Jeremy Monnet
--nextPart2966324.tb0VJSncXK
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Bonjour,

je suis en train d'=E9crire (laborieusement) un script bash, et j'ai un pro=
bl=E8me=20
de syntaxe dans les boucles if :
if [ -d $movie ]
then
...
if [ "$PAYSLOT_MOVIE" -ge "7" ]
then
...
else if [ "$PAYSLOT_MOVIE" -eq "1"] && [ "$PAYSLOT_MOVIE" -eq "3"]=
=20
then
...
fi
else
....
fi

quand j'execute, ca me dit " syntax error near unexpected token `else' " a =
la=20
ligne du second else (le dernier a la fin). Pourtant il me semble qu'on peu=
t=20
imbriquer des boucles ? Un exemple en est m=EAme donn=E9 a la page 123=A0du=
ABS=20
guide.

Quelqu'un a une id=E9e ?

Merci !

Jeremy
=2D-=20
=2D-----
Linux Registered User #317862

You want to use GNU/Linux or Windows ?
=2D You want to spend time or money ?

Why is Microsoft raising prices on you? Because they can !
=2D To take that power away from them, use Linux !

--nextPart2966324.tb0VJSncXK
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.5 (GNU/Linux)

iD8DBQBBOMAsEzyW9xSzTagRAlWPAJ9q2f5EMRoFkP+kk+6L6HJof1ABvACfWL4U
5OQdqUy5cf4xIsOv7gYLOts=
=yNK9
-----END PGP SIGNATURE-----

--nextPart2966324.tb0VJSncXK--


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org

10 réponses

1 2
Avatar
loick.b
Le vendredi 3 Septembre 2004 21:04, Jeremy Monnet a écrit :
else if [ "$PAYSLOT_MOVIE" -eq "1"] && [ "$PAYSLOT_MOVIE" -eq "3"]


Remplace déja le "else if" par un "elif"...

cordialmement,
--
Loick.B
Avatar
Jeremy Monnet
--nextPart6926488.D9SzFC57KH
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Le Vendredi 3 Septembre 2004 21:37, a écrit :
Le vendredi 3 Septembre 2004 21:04, Jeremy Monnet a écrit :
> else if [ "$PAYSLOT_MOVIE" -eq "1"] && [ "$PAYSLOT_MOVIE" -eq
> "3"]

Remplace déja le "else if" par un "elif"...



Oui ! ca marche déjà un peu mieux ! Y'a-t-il une différence entre les deux ?
Je n'ai pas fait de tests, mais j'ai l'impression qu'avec "else if" il faut
rajouter un "then" alors que "elif" n'en a pas besoin ? J'ai raison, ou je
suis à coté d ela plaque ?

Re - Merci ! :o)

Jeremy
--
------
Linux Registered User #317862

You want to use GNU/Linux or Windows ?
- You want to spend time or money ?

Why is Microsoft raising prices on you? Because they can !
- To take that power away from them, use Linux !

--nextPart6926488.D9SzFC57KH
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.5 (GNU/Linux)

iD8DBQBBOMz/EzyW9xSzTagRAvvvAKCaqu5WQpqQzXEc8j3JzNm/7hFLygCcC9Vu
EYI4BiyIDb0oa1xz8oXL1RM =6IMz
-----END PGP SIGNATURE-----

--nextPart6926488.D9SzFC57KH--


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
fra-duf-no-spam
--=-=- Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable

Le 12664ième jour après Epoch,
Jeremy Monnet écrivait:

Bonjour,

je suis en train d'écrire (laborieusement) un script bash, et j'ai un p roblème
de syntaxe dans les boucles if :
if [ -d $movie ]
then
...
if [ "$PAYSLOT_MOVIE" -ge "7" ]
then
...
else if [ "$PAYSLOT_MOVIE" -eq "1"] && [ "$PAYSLOT_MOVIE" -eq "3" ]
then
...
fi
else
....
fi

quand j'execute, ca me dit " syntax error near unexpected token `else' " a la
ligne du second else (le dernier a la fin). Pourtant il me semble qu'on p eut
imbriquer des boucles ? Un exemple en est même donné a la page 123  du ABS
guide.

Quelqu'un a une idée ?



Oui. Tu comptes les if et les fi, et ça va t'aider.

Si tu trouves pas:

Par rapport à ton indentation, il manque le 'fi' de

else if [ "$PAYSLOT_MOVIE" -eq "1"] && [ "$PAYSLOT_MOVIE" -eq "3" ]




--
A student who changes the course of history is probably taking an exam.

--=-=- Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)

iD8DBQBBONI9jaoyFt0zqSURAhnsAJsGVk9lzDQO1KQ7daV0RABivDapcACeP9d6
v7bqCdLMMPUGDAKZzU9cAYg =lx95
-----END PGP SIGNATURE-----
--=-=-=--


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Jeremy Monnet
--nextPart1732305.Gi3DyT780i
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Le Vendredi 3 Septembre 2004 22:21, François TOURDE a écrit :
Oui. Tu comptes les if et les fi, et ça va t'aider.

Si tu trouves pas:

Par rapport à ton indentation, il manque le 'fi' de

> else if [ "$PAYSLOT_MOVIE" -eq "1"] && [ "$PAYSLOT_MOVIE" -eq
> "3"]



Oui ok ! :o) en fait je ne prenais pas cette partie comme une nouvelle bouc le,
mais comme la continuation de la courante, c'est pour ca que je ne l'écri vais
pas. Dans l'exemple du manuel bash ils utilisent "elif" et marque en
commentaire "same as else if" mais j'ai l'impression quie les 2 ont une
syntaxe un peu différente quand même, non ?

En tout cas merci pour la réponse ! :o)

Autre question : je voudrais remplacer du texte dans un fichier (c'est
l'intérêt de ces boucles) par des valeurs qui sont variables. Est-ce qu 'on
peut utiliser sed avec quelque chose dans le style :

NEW_VAR=$(($OLD_VAR + 1))
cat $file | sed -e 's/VAR=$OLD_VAR/VAR=$NEW_VAR/' >> $file2

?

Encore une fois merci pour l'aide ! :o)

Jeremy
--
------
Linux Registered User #317862

You want to use GNU/Linux or Windows ?
- You want to spend time or money ?

Why is Microsoft raising prices on you? Because they can !
- To take that power away from them, use Linux !

--nextPart1732305.Gi3DyT780i
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.5 (GNU/Linux)

iD8DBQBBONG1EzyW9xSzTagRAiaUAKCCHFFg3xFH0b1F0eltSTwJHefs7wCfUn8I
x2CfK13tB0flLrHPUpRDCmE =/wgi
-----END PGP SIGNATURE-----

--nextPart1732305.Gi3DyT780i--


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Jeremy Monnet
--nextPart4598574.hvQfPXjphZ
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Le Vendredi 3 Septembre 2004 22:18, Jeremy Monnet a écrit :
Autre question : je voudrais remplacer du texte dans un fichier (c'est
l'intérêt de ces boucles) par des valeurs qui sont variables. Est-ce qu'on
peut utiliser sed avec quelque chose dans le style :

NEW_VAR=$(($OLD_VAR + 1))
cat $file | sed -e 's/VAR=$OLD_VAR/VAR=$NEW_VAR/' >> $file2



Je me réponds a moi-même : oui, en utilisant des " a la place des ' .

Désolé pour le bruit !

Jeremy
PS : pourquoi après avoir des heures, on trouve souvent une soluce 3 minu tes
après avoir posé la question ?
PS2 : peut-être parce qu'on a réfléchi correctement a sa formulation entre
temps ?
--
------
Linux Registered User #317862

You want to use GNU/Linux or Windows ?
- You want to spend time or money ?

Why is Microsoft raising prices on you? Because they can !
- To take that power away from them, use Linux !

--nextPart4598574.hvQfPXjphZ
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.5 (GNU/Linux)

iD8DBQBBONgxEzyW9xSzTagRAl7RAJ9pAeO9qvIVX7Qvm+QA/t3TGwOrigCdH/0D
O5DOwGPdiXqgpGLnKOXSXtI =Ybge
-----END PGP SIGNATURE-----

--nextPart4598574.hvQfPXjphZ--


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
bobbydjo
une bonne doc en la matière:

http://www.tldp.org/LDP/abs/html/


bonne lecture!
Avatar
JusTiCe8
Bonjour,

Jeremy Monnet a écrit :

Le Vendredi 3 Septembre 2004 22:18, Jeremy Monnet a écrit :


Autre question : je voudrais remplacer du texte dans un fichier (c'est
l'intérêt de ces boucles) par des valeurs qui sont variables. Est-ce qu'on
peut utiliser sed avec quelque chose dans le style :

NEW_VAR=$(($OLD_VAR + 1))
cat $file | sed -e 's/VAR=$OLD_VAR/VAR=$NEW_VAR/' >> $file2





Je me réponds a moi-même : oui, en utilisant des " a la place des ' .

Désolé pour le bruit !





pas grave ;)

Jeremy
PS : pourquoi après avoir des heures, on trouve souvent une soluce 3 minutes
après avoir posé la question ?




parce que la meilleur manière de résoudre un pb est de le poser
correctement !

PS2 : peut-être parce qu'on a réfléchi correctement a sa formulation entre
temps ?





Sinon, une petite précision de rigueur : on dit pas "boucle" quand il
s'agit d'alternative (construction if...then...else), et comme les shell
sont très pointilleux sur leur syntaxe... :)

J8.


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Yves Rutschle
On Fri, Sep 03, 2004 at 10:46:38PM +0200, Jeremy Monnet wrote:
Le Vendredi 3 Septembre 2004 22:18, Jeremy Monnet a écrit :
> Autre question : je voudrais remplacer du texte dans un fichier (c'est
> l'intérêt de ces boucles) par des valeurs qui sont variables. Est-ce qu'on
> peut utiliser sed avec quelque chose dans le style :
>
> NEW_VAR=$(($OLD_VAR + 1))
> cat $file | sed -e 's/VAR=$OLD_VAR/VAR=$NEW_VAR/' >> $file2
>
Je me réponds a moi-même : oui, en utilisant des " a la place des ' .



Tu peux aussi éviter le cat:
sed -e "s/blah/bleh/" $file >> $file2

PS : pourquoi après avoir des heures, on trouve souvent une soluce 3 minutes
après avoir posé la question ?
PS2 : peut-être parce qu'on a réfléchi correctement a sa formulation entre
temps ?



Correct, c'est pour ça qu'il est souvent utile d'expliquer
le problème à son chat: on lui explique, et au milieu de
l'explication on s'exclame "bon sang mais c'est bien sûr!".
Du coup, les chats n'ont jamais une explication complète, et
c'est pour ça que les chats ne savent pas programmer. Du
coup, on peut souvent les retirer de la ligne de commande,
comme dans l'exemple ci-dessus.

Y.


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Jeremy Monnet
--nextPart1355278.JVaIExKgoQ
Content-Type: text/plain;
charset="iso-8859-15"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Le Samedi 4 Septembre 2004 08:45, Yves Rutschle a écrit :
> PS : pourquoi après avoir des heures, on trouve souvent une soluce 3
> minutes après avoir posé la question ?
> PS2 : peut-être parce qu'on a réfléchi correctement a sa formulat ion
> entre temps ?

Correct, c'est pour ça qu'il est souvent utile d'expliquer
le problème à son chat: on lui explique, et au milieu de
l'explication on s'exclame "bon sang mais c'est bien sûr!".
Du coup, les chats n'ont jamais une explication complète, et
c'est pour ça que les chats ne savent pas programmer. Du
coup, on peut souvent les retirer de la ligne de commande,
comme dans l'exemple ci-dessus.



Passe, passe le oinje ! :-p
Non sans rire c'est vrai qu même quand on recherche sur google, on recher che
souvent juste 2 ou 3 mots qui semblent pertinents .... Et quand on doit
expliquer son problème on y passe beaucoup plus de temps, et donc on trou ve
souvent d'autres mots clés, ou on s'ouvre à d'autres voies de recherch es ...

Pour ce qui est de remplacer "cat file | " par "sed file", est-ce que ca pe ut
être considéré comme "plus propre", "plus ri goureux", "plus unixien" , ou
est-ce que c'est juste une vieille habitude de toujours faire "au plus
juste" ? (cf une discussion a propos d'un script sur linuxfr où les gens se
sont expliqués qu'il fallait mieux utiliser perl parce qu'on pouvait
travailler sur le même fichier directement sans passer par un fichier tam pon
entre-temps, ou alors awk parce que la syntaxe était plus facile). En fai t je
veux juste des avis parce que je ne suis pas sur qu'il y ait une réponse
ferme et définitive pour mettre tout le monde d'accord ?

Jeremy
PS : ce mail est troll protected !
--
------
Linux Registered User #317862

You want to use GNU/Linux or Windows ?
- You want to spend time or money ?

Why is Microsoft raising prices on you? Because they can !
- To take that power away from them, use Linux !

--nextPart1355278.JVaIExKgoQ
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.5 (GNU/Linux)

iD8DBQBBOYUhEzyW9xSzTagRAuJ/AJ4r69SQF4emG9aN/bjEZ1oZqxbc8QCeNp5q
affpj+CQQmyfodC3R+mrTx4 =dTbv
-----END PGP SIGNATURE-----

--nextPart1355278.JVaIExKgoQ--


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Thomas Silvestre
Le sam 04/09/2004 à 11:04, Jeremy Monnet a écrit :
Le Samedi 4 Septembre 2004 08:45, Yves Rutschle a écrit :
> > PS : pourquoi après avoir des heures, on trouve souvent une soluce 3
> > minutes après avoir posé la question ?
> > PS2 : peut-être parce qu'on a réfléchi correctement a sa formulation
> > entre temps ?
>
> Correct, c'est pour ça qu'il est souvent utile d'expliquer
> le problème à son chat: on lui explique, et au milieu de
> l'explication on s'exclame "bon sang mais c'est bien sûr!".
> Du coup, les chats n'ont jamais une explication complète, et
> c'est pour ça que les chats ne savent pas programmer. Du
> coup, on peut souvent les retirer de la ligne de commande,
> comme dans l'exemple ci-dessus.
>
Passe, passe le oinje ! :-p
Non sans rire c'est vrai qu même quand on recherche sur google, on recherche
souvent juste 2 ou 3 mots qui semblent pertinents .... Et quand on doit
expliquer son problème on y passe beaucoup plus de temps, et donc on trouve
souvent d'autres mots clés, ou on s'ouvre à d'autres voies de recherches ...

Pour ce qui est de remplacer "cat file | " par "sed file", est-ce que ca peut
être considéré comme "plus propre", "plus ri goureux", "plus unixien", ou
est-ce que c'est juste une vieille habitude de toujours faire "au plus
juste" ? (cf une discussion a propos d'un script sur linuxfr où les gens se
sont expliqués qu'il fallait mieux utiliser perl parce qu'on pouvait
travailler sur le même fichier directement sans passer par un fichier tampon
entre-temps, ou alors awk parce que la syntaxe était plus facile). En fait je
veux juste des avis parce que je ne suis pas sur qu'il y ait une réponse
ferme et définitive pour mettre tout le monde d'accord ?

Jeremy
PS : ce mail est troll protected !



la bonne méthode est celle qui
1) fonctionne
2) est lisible facilement
3) idem 5 mois après :-)

pour le reste, c'est une question de feeling. La syntaxe de chaque
commande est différente il faut trouver celle avec laquelle on est le
plus à l'aise.
S'il y a des besoins particuliers en performance, là il faut peut-être
passer du bash au perl voire au C/C++.


--
Pensez
1 2