Commandes find & echo - probleme d'affichage [Scripts Shell] - Shell/Batch - Programmation
Marsh Posté le 21-06-2004 à 12:36:03
echo ca l'affiche la string, ca ne l'exécute pas...
Marsh Posté le 21-06-2004 à 13:15:22
Faux, car quand je fais ca :
Citation : #!/bin/bash |
j'obtiens juste la liste des fichiers html dans le repertoire courant...
Marsh Posté le 21-06-2004 à 13:16:02
ReplyMarsh Posté le 21-06-2004 à 16:03:12
==> echo `eval $str`
find . -name \"*.html\"
ca fourni un retour imprévisible : le * est remplacé par ce que le shell trouve dans le repertoire courant ....
Marsh Posté le 22-06-2004 à 11:03:20
eval "*" est différent de eval \"*\"
c'est pareil pour find
Marsh Posté le 23-06-2004 à 03:35:46
Ben oui mais justement, il les avait les double quotes... Je comprend pas ce que tu veux dire à propos du « * ». Il a juste à ajouter le eval comme tu l'as dit, et ça roule.
Marsh Posté le 23-06-2004 à 09:24:47
quand tu lances : find . -name \"*.html\"
le shell remplace * (il n'est pas neutralisé) par ce qu'il trouve dans le repertoire courant qui peut correspondre
ex 1 : si tu as un fichier qui s'appelle "ty.html"
commande : find . -name \"*.html\"
le shell interprete : find . -name "ty.html" et trouve
./"ty.html"
ex 2 : si tu as 2 fichiers ("ty.html" "ty2.html" ) qui
correspondent au masque ca plantera
find . -name \"*.html\"
le shell interprete : find . -name "ty.html" "ty2.html"
find: bad option "ty2.html"
d'ou ma remarque sur le comportement imprévisible de ce type de commande qui dépend du contenu du repertoire
Marsh Posté le 25-06-2004 à 08:57:02
en fait fallait juste faire :
str = `find . -name \"*.html\"`
merci de votre aide
Marsh Posté le 21-06-2004 à 11:57:46
j'essaye d'executer le script suivant :
#!/bin/bash
str="find . -name \"*.html\""
echo `$str`
ce script est cense me donner la liste des fichiers html presents dans tous mes sous-repertoires, mais il ne m'affiche rien. Pourtant quand je fais un echo "$str", il m'affiche bien : find . -name "*.html"
une idee?