[shell] cat + export variables

Résolu
gringo -  
 gringo -
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. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    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
  2. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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
  3. gringo
     
    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
  4. gringo
     
    c'est exactement ce qu'il me fallait, merci dubcek
    0