[shell] cat + export variables

Résolu/Fermé
gringo - 20 mai 2010 à 09:15
 gringo - 20 mai 2010 à 13:23
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


A voir également:

4 réponses

dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
20 mai 2010 à 12:43
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
Modifié par lami20j le 20/05/2010 à 10:03
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
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
c'est exactement ce qu'il me fallait, merci dubcek
0