Forum Programmation.shell herescript

Posté par .
Tags : aucun
1
6
mar.
2006
bonjour.
pourquoi que ça marche pas quand je fait ça:
echo <! >>plop
ça devrais pas m'écrire dans ./plop tout ce que je mets dans le herescript jusqu'au "!" ?
le cat plop me donne une ligne vide...
c'est normal ? (je suppose) je m'y prends mal? (hmm.. pareil.). est-ce au moins possible?
merça
  • # pardon

    Posté par . Évalué à 1.

    ça risque pas de marcher si je vous mets pas ce que j'écris vraiment...
    j'ai oublié un < en route.
    je voulais mettre echo <<! >>plop bien sur
    • [^] # Re: pardon

      Posté par . Évalué à 1.

      plutot en utilisant la commande cat :

      cat > file.txt << !

      Allez tous vous faire spéculer.

      • [^] # Re: pardon

        Posté par . Évalué à 0.

        moui effectivement mais je comprends pas ... (pas taper)
        pourquoi echo ne marche pas alors que cat oui (qui je croyais était sensé afficher le contenu du fichier, ce qu'il ne fait pas à la fin du herescript)
        j'espere que personne est contre le fait que je compennes ce que j'écris et merci pour les explications (je suppose qu'il y en a...)
        • [^] # Re: pardon

          Posté par (page perso) . Évalué à 6.

          Pas de probleme, la raison est simple:

          cat : lit le{s) fichier(s) fournis en arguments ou l'entrée standard et l'affiche sur la sortie standard.

          echo : affiche la chaine fournie en argument sur la sortie standard.

          Donc quand tu fait cela:

          echo >> plop <<!
          ===> echo affiche un retour chariot qu'il ecrit sur la sortie standard (ligne vide)et se contrefout de l'entrée standard. Le shell qui l'a appellé lui va attendra la fin du here document pour rendre la main normalement.

          cat >> plop <<!
          ===> pas de fichier fournit en argument donc lecture stdin (le here-document) et affichage sur la sortie standard (plop)

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.