Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Stephane Chazelas
2007-05-15, 18:17(+02), Ph Ivaldi:
$ echo $BASH /bin/bash
Quelqu'un peut-il me dire quelle est la différence entre ces deux syntaxes:
find . -type f -exec sh -c 'script $0' {} ;
ET
find . -type f -exec sh -c 'script $0' '{}' ';'
La deuxième ne me semblant pas conventionnelle, il doit bien y avoir une bonne raison de l'utiliser.
Ce qui est important, c'est que find recoive les argument "{}" et ";", et '' sont des facons de dire au shell de ne pas traiter certains caracteres specialement (comme le ; qui pour tous les shells serait autrement consideré comme un separateur de commandes plutot qu'un argument passé a find).
"{" et "}" sont speciaux dans la plupart des shells modernes, par exemple au debut d'une ligne, you dans les brace expansions.
Dans ce cas, precis, {} a peu de chance d'etre consideré specialement surtout par bash, mais rajouter des quotes ne mange pas de pain.
Note que tu as oublié les quotes autour de $0 above.
find . -type f -exec sh -c 'script "$0"' {} ";"
-- Stéphane
2007-05-15, 18:17(+02), Ph Ivaldi:
$ echo $BASH
/bin/bash
Quelqu'un peut-il me dire quelle est la différence entre ces deux
syntaxes:
find . -type f -exec sh -c 'script $0' {} ;
ET
find . -type f -exec sh -c 'script $0' '{}' ';'
La deuxième ne me semblant pas conventionnelle, il doit bien y avoir une
bonne raison de l'utiliser.
Ce qui est important, c'est que find recoive les argument "{}"
et ";", et '' sont des facons de dire au shell de ne pas
traiter certains caracteres specialement (comme le ; qui pour
tous les shells serait autrement consideré comme un separateur
de commandes plutot qu'un argument passé a find).
"{" et "}" sont speciaux dans la plupart des shells modernes,
par exemple au debut d'une ligne, you dans les brace expansions.
Dans ce cas, precis, {} a peu de chance d'etre consideré
specialement surtout par bash, mais rajouter des quotes ne mange
pas de pain.
Note que tu as oublié les quotes autour de $0 above.
Quelqu'un peut-il me dire quelle est la différence entre ces deux syntaxes:
find . -type f -exec sh -c 'script $0' {} ;
ET
find . -type f -exec sh -c 'script $0' '{}' ';'
La deuxième ne me semblant pas conventionnelle, il doit bien y avoir une bonne raison de l'utiliser.
Ce qui est important, c'est que find recoive les argument "{}" et ";", et '' sont des facons de dire au shell de ne pas traiter certains caracteres specialement (comme le ; qui pour tous les shells serait autrement consideré comme un separateur de commandes plutot qu'un argument passé a find).
"{" et "}" sont speciaux dans la plupart des shells modernes, par exemple au debut d'une ligne, you dans les brace expansions.
Dans ce cas, precis, {} a peu de chance d'etre consideré specialement surtout par bash, mais rajouter des quotes ne mange pas de pain.
Note que tu as oublié les quotes autour de $0 above.
find . -type f -exec sh -c 'script "$0"' {} ";"
-- Stéphane
Benoit Izac
Bonjour,
le 15/05/2007 à 18:17, Ph. Ivaldi a écrit dans le message :
$ echo $BASH /bin/bash
Quelqu'un peut-il me dire quelle est la différence entre ces deux syntaxes:
find . -type f -exec sh -c 'script $0' {} ;
ET
find . -type f -exec sh -c 'script $0' '{}' ';'
La deuxième ne me semblant pas conventionnelle, il doit bien y avoir une bonne raison de l'utiliser.
« » et « '' » sont deux méthodes différentes pour que « ; » ne soit pas interprété par le shell ; ces deux syntaxes sont donc équivalentes et je le prouve ;-) :
% cat viewargs.c #include <stdio.h>
int main(int argc, char *argv[]) { int i; for (i = 1; i < argc; ++i) printf("`%s' ", argv[i]); puts(""); return 0; } % cc -o viewargs viewargs.c % ./viewargs find . -type f -exec sh -c 'script $0' {} ; `find' `.' `-type' `f' `-exec' `sh' `-c' `script $0' `{}' `;' % ./viewargs find . -type f -exec sh -c 'script $0' '{}' ';' `find' `.' `-type' `f' `-exec' `sh' `-c' `script $0' `{}' `;' % ./viewargs find . -type f -exec sh -c 'script $0' {} ; `find' `.' `-type' `f' `-exec' `sh' `-c' `script $0' `{}'
-- Benoit Izac
Bonjour,
le 15/05/2007 à 18:17, Ph. Ivaldi a écrit dans le message
<87ejlinjs6.fsf@tele2.fr> :
$ echo $BASH
/bin/bash
Quelqu'un peut-il me dire quelle est la différence entre ces deux
syntaxes:
find . -type f -exec sh -c 'script $0' {} ;
ET
find . -type f -exec sh -c 'script $0' '{}' ';'
La deuxième ne me semblant pas conventionnelle, il doit bien y avoir
une bonne raison de l'utiliser.
« » et « '' » sont deux méthodes différentes pour que « ; » ne soit
pas interprété par le shell ; ces deux syntaxes sont donc équivalentes
et je le prouve ;-) :
% cat viewargs.c
#include <stdio.h>
int main(int argc, char *argv[])
{
int i;
for (i = 1; i < argc; ++i)
printf("`%s' ", argv[i]);
puts("");
return 0;
}
% cc -o viewargs viewargs.c
% ./viewargs find . -type f -exec sh -c 'script $0' {} ;
`find' `.' `-type' `f' `-exec' `sh' `-c' `script $0' `{}' `;'
% ./viewargs find . -type f -exec sh -c 'script $0' '{}' ';'
`find' `.' `-type' `f' `-exec' `sh' `-c' `script $0' `{}' `;'
% ./viewargs find . -type f -exec sh -c 'script $0' {} ;
`find' `.' `-type' `f' `-exec' `sh' `-c' `script $0' `{}'
le 15/05/2007 à 18:17, Ph. Ivaldi a écrit dans le message :
$ echo $BASH /bin/bash
Quelqu'un peut-il me dire quelle est la différence entre ces deux syntaxes:
find . -type f -exec sh -c 'script $0' {} ;
ET
find . -type f -exec sh -c 'script $0' '{}' ';'
La deuxième ne me semblant pas conventionnelle, il doit bien y avoir une bonne raison de l'utiliser.
« » et « '' » sont deux méthodes différentes pour que « ; » ne soit pas interprété par le shell ; ces deux syntaxes sont donc équivalentes et je le prouve ;-) :
% cat viewargs.c #include <stdio.h>
int main(int argc, char *argv[]) { int i; for (i = 1; i < argc; ++i) printf("`%s' ", argv[i]); puts(""); return 0; } % cc -o viewargs viewargs.c % ./viewargs find . -type f -exec sh -c 'script $0' {} ; `find' `.' `-type' `f' `-exec' `sh' `-c' `script $0' `{}' `;' % ./viewargs find . -type f -exec sh -c 'script $0' '{}' ';' `find' `.' `-type' `f' `-exec' `sh' `-c' `script $0' `{}' `;' % ./viewargs find . -type f -exec sh -c 'script $0' {} ; `find' `.' `-type' `f' `-exec' `sh' `-c' `script $0' `{}'