• [^] # Re: ...

    Posté par . En réponse au message problème espace dans les noms de fichier. Évalué à 2.

    1er point:
    lorsque tu utilises une variable dans une commande interpretee par le shell, celui ci effectue une substitution, c'est a dire qu'il remplace la variable par son contenu. Le contenu est tout ce qui se trouve entre les guillemets

    2eme point:
    lorsque tu ecris une ligne dans ta console (ou dans un script interprete par un shell), le shell va decouper ta ligne en morceau en considerant que chaque morceau est separe par un espace. Si plusieurs morceaux sont incluent dans des simples ou doubles guillemets, le shell considere que tous ces morceaux n'en forme qu'un seul
    exemples:
    - ls /home/jeanclaude/Photo/noel 2005/dscn0323.jpg
    le shell va chercher les fichiers /home/jeanclaude/Photo/noel, puis 2005/dscn0323.jpg
    - ls "/home/jeanclaude/Photo/noel 2005/dscn0323.jpg"
    le shell va chercher le fichier /home/jeanclaude/Photo/noel 2005/dscn0323.jpg
    lors de la substituion d'une variable par son contenu, tout le contenu est considere comme un seul morceau.

    3eme point:
    l'utilisation d'un backslash (\) dans ta ligne de commande indique au shell que le caractere qui suit ne doit pas etre interprete: l'espace qui suit un backslash n'est plus considere comme un separateur de morceaux mais comme un espace faisant parti du morceau en cours. De meme pour la guillemet se trouvant apres un backslash: elle ne delimite plus un morceau mais fait parti du morceau en cours.

    script2: du 1er et 3eme point decoule que $essai sera remplace par "/home/jeanclaude/Photo/noel 2005/dscn0323.jpg", les guillements et l'espace etant considere comme faisant parti du morceau. C'est comme si tu avais ecrit
    taille=`mkisofs -R -q -print-size \"/home/jeanclaude/Photo/noel\ 2005/dscn0323.jpg\"`
    tu dournis a mkisofs le fichier \"/home/jeanclaude/Photo/noel\ 2005/dscn0323.jpg\"

    script3: tes backslashs sont inclus dans le morceau ; c'est equivalent a :
    taille=`mkisofs -R -q -print-size \\\"/home/jeanclaude/Photo/noel\ 2005/dscn0323.jpg\\\"`
    tu fournis a mkisofs le fichier \\\"/home/jeanclaude/Photo/noel\ 2005/dscn0323.jpg\\\"

    script4: pareil que script 3, ton backslash est inclus dans le morceau, et ta commande est equivalente a:
    taille=`mkisofs -R -q -print-size /home/jeanclaude/Photo/noel\\ 2005/dscn0323.jpg`
    tu fournis a mkisofs d'une part le fichier /home/jeanclaude/Photo/noel\,円 puis le fichier 2005/dscn0323.jpg

    j'espere que c'est plus clair.... en me relisant, c'est pas sur :)