[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Erreur "cp: opérande du fichier cible manquant" dans script shell [debutant]



Salut


Seb, merci pour tes remarques. :D

Moi aussi (malgre que ce soit moi qui l'est ecrit), ca me piquait les yeux ;-)
Au prochain script, j'appliquerai tes conseils.

Par contre, j'ai un peu de mal a comprendre la subtilite sur "[ expr1 ] && [ expr2]" et "[ expr1 -a expr2 ]"

Daniel: "Ce n'est pas la même chose. Le premier exemple dit "expr2 est réalisée si expr1 est vrai". Le second exemple dit "si expr1 ET expr2 sont vrais"

Seb:"action2 n'est entreprise que si action1 se termine correctement, mais ce sont des actions et il peut être dommageable d'exécuter action2 si action1 ne se passe pas bien."

Je pensais que ces 2 syntaxes etaient equivalentes.

Si j'ai bien compris vos propos alors dans le cas de la 1er syntaxe, [ expr1 ] est evalue, si le resultat est "faux" alors le test "[ expr1 ] && [ expr2]" est stoppe et renvoi "faux" comme resultat, et cela sans que  [ expr2 ] est ete evalue.

Dans le cas de la 2eme syntaxe,  [ expr1 ] est evalue,  [ expr2 ] est evalue, et ensuite le test "[ expr1 -a expr2 ]" est evalue pour donne un resultat.

Est ce bien cela?

C'est vrai que dans le cas ou "expr1" ou "expr2" realise une action, de connaitre cet difference peut etre tres utile.



Cordialement
Hugues




Le 16 juillet 2012 14:37, <seb.marque@free.fr> a écrit :
C'est incontestable :)

mais j'avoue préférer:
action1 && action2

et

[ expr1 -a expr2 ]
ou mieux
test expr1 -a expr2

action2 n'est entreprise que si action1 se termine correctement, mais ce sont des actions et il peut être dommageable d'exécuter action2 si action1 ne se passe pas bien.

En revanche pour un test, surtout complexe, je préfère n'utiliser qu'une seule instance de test (ou [). Les tests n'étant qu'arithmétiques il n'y a pas de "danger" à évaluer expr2 si expr1 est faux. Ça a l'avantage de lancer un seul processus au lieu de deux (ou plus) et je perçois l'avantage comme celui d'un (joli) "grep foo bar" par rapport à un (horrible) "cat bar | grep foo" :).

D'ailleurs, je n'en ai pas la moindre idée mais ça ne m'étonnerait pas que [ évalue un peu intelligemment et donc se passe d'évaluations inutiles (faudrait zieuter le code source, le man n'en parle pas)

Cordialement
seb

----- Mail original -----
De: "Daniel Huhardeaux" <no-spam@tootai.net>
À: debian-user-french@lists.debian.org
Envoyé: Lundi 16 Juillet 2012 09:16:18
Objet: Re: Erreur "cp: opérande du fichier cible manquant" dans script shell [debutant]

Bonjour

Le 16/07/2012 08:35, Sébastien MARQUE a écrit :
> Bonjour,
>
> oui, si ça me piquait les yeux c'est surtout parce que c'était
> difficile à lire (majuscules, pas d'espace, signes cabalistiques
> toussa toussa) :), après ce sont des goûts personnels qui peuvent très
> bien ne pas être les plus judicieux:
>
> * je trouve les tests
> "[ expr1 ] && [ expr2]"
> moins élégants que
> "[ expr1 -a expr2 ]"

Ce n'est pas la même chose. Le premier exemple dit "expr2 est réalisée
si expr1 est vrai". Le second exemple dit "si expr1 ET expr2 sont vrais"

--
Daniel

--
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: [🔎] 5003BFC2.6000707@tootai.net" target="_blank">http://lists.debian.org/[🔎] 5003BFC2.6000707@tootai.net

--
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: [🔎] 1300833691.35769510.1342442227243.JavaMail.root@zimbra33-e6.priv.proxad.net" target="_blank">http://lists.debian.org/[🔎] 1300833691.35769510.1342442227243.JavaMail.root@zimbra33-e6.priv.proxad.net



Reply to: