[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]



Bonjour

Le 17/07/2012 11:04, Hugues MORIN a écrit :

[...]


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.

Non


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.

Oui, mais le renvoi "faux" me dérange car expr peut être une commande, c'est donc la sortie de cette commande qui sera analysée. Il faut voir cela comme "si expr1 est évaluée/exécutée et que le résultat est vrai/sans erreur alors expr2 est évaluée/exécutée"


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.

Même pas: si expr1 est faux expr2 n'est même pas évaluée/exécutée.


Est ce bien cela?

Maintenant oui ;-)

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

Tout à fait.


    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
    <mailto:no-spam@tootai.net>>
    À: debian-user-french@lists.debian.org
    <mailto: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
    <mailto:debian-user-french-REQUEST@lists.debian.org>
    En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
    <mailto:listmaster@lists.debian.org>
    Archive: 5003BFC2.6000707@tootai.net">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
    <mailto:debian-user-french-REQUEST@lists.debian.org>
    En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
    <mailto:listmaster@lists.debian.org>
    Archive:
    1300833691.35769510.1342442227243.JavaMail.root@zimbra33-e6.priv.proxad.net">http://lists.debian.org/1300833691.35769510.1342442227243.JavaMail.root@zimbra33-e6.priv.proxad.net


Le 16 juillet 2012 14:37, <seb.marque@free.fr <mailto:seb.marque@free.fr>> a écrit :


Reply to: