[shell] cat + export variables

Résolu
Bonjour,

je suis un grand débutant sous linux, je bloque sur un truc peut etre bête mais bon...

dans un script je defini des variables ex: nom prenom

echo quel est ton nom
read nom

echo quel est ton prenom
read prenom

cat /path/to/bonjour.txt > path/to/presentation.txt

j'ai un fichier bonjour.txt qui contient la ligne suivante :

bonjour je m'appelle $prenom $nom

cat n'exporte pas les variables, en revanche si je fais
echo "je m'appelle $prenom $nom" > /path/to/presentation.txt

$prenom et $nom sont remplacés par les valeurs définies par le read plus haut.

puis-je utiliser cat ou dois-je me débrouiller avec echo ?

Merci

4 réponses

  1. Contributeur
    hello
    $ cat a3
    bonjour $nom $prenom 
    il fait beau
    au revoir $prenom $nom 
    $ 
    $ nom=Bon
    $ prenom=Jean
    $ 
    $ eval "echo \"$(cat a3)\""
    bonjour Bon Jean 
    il fait beau
    au revoir Jean Bon 
    $ 
    2
    1. Modérateur
      Salut,

      echo suffit

      Si tu veux avec cat tu peux faire comme ça

      ~ $ cat nomprenom.sh 
      #!/bin/bash 
      
      echo -n "Nom? " 
      read nom 
      echo -n "Prenom? " 
      read prenom 
      
      cat <<FIN > presentation.txt 
      Bonjour, je m'appelle $nom $prenom 
      FIN 
      
      ~ $ ./nomprenom.sh 
      Nom? AAA 
      Prenom? titi 
      
      ~ $ cat presentation.txt 
      Bonjour, je m'appelle AAA titi

      GNU/Linux:Linux is Not Ubuntu! Quel linux choisir ne veut pas dire votre Distribution préférée,
      106485010510997108
      0
      1. je te remercie lamij20 pour cette explication.

        je voudrais en fait faire quelque chose d'un peu plus complexe que cela.

        je m'explique, dans mon exemple bonjour.txt est très basique et donc echo ou ta solution avec cat est tout a fait adaptée.

        mais en réalité, mon fichier bonjour.txt est un peu plus complexe, il fait une 30aine de lignes.

        si je dois taper tout le texte dans le script ça revient a faire un echo.

        donc l'idée était un bonjour.txt qui contient $nom $prenom à certain endroits, je définie mes variables dans mon script, je fais un cat vers un fichier de sortie ou j'aurais mes 30 lignes avec les bonnes valeur pour $nom $prenom

        donc j'ai essayé aussi avec une boucle while read ligne; echo $ligne >> presentation; done<bonjour

        mais ça fait la même chose qu'avec cat, les variables ne sont pas remplacées par leurs valeurs alors que si j'utilise echo sans faire de boucle ça fonctionne.

        j'espère que je suis suffisamment clair, et merci pour ton aide.
        0
        1. c'est exactement ce qu'il me fallait, merci dubcek
          0