Flux rss
Rechercher : dans
Par :

[Linux-Shell-scripting] commande cat ou sed ?

Hitchy, le jeudi 7 avril 2005 à 16:41:01 
 Signaler ce message aux modérateurs

Bonjour à tous,

Je débute en programmation Shell et après avoir contourner mon problème, je me retrouve bloqué par un petit (à mon avis) problème : Explication.
Dans mon script, je dois créé un fichier .conf puis écrire plusieurs ligne dedans. Ces mêmes lignes contiennent des variables.
J'avais tout simplement penser à la commande cat >> essai.conf, puis ajouter à la suite l'intégralité de la conf avec ses variables; mais voilà !! c'est apparement pas aussi simple que ça...j'ai essayer en rajoutant des "" ou ( ) ou encore ``, mais rien ne fonctionne.

J'ai ensuite essayer la commande sed -n 1p essai.conf mais je retombe sur le même problème.

Donc voilà ma question : Comment ajouter un texte complet contenant des variables dans un fichier vide (le tout dans un fichier de shell-scripting) ?

1

Castor, le jeudi 7 avril 2005 à 17:07:25

Il faut "echapper" les caracteres speciaux de ta configuration avec des "\"
par exemple $toto deviens \$toto .O
(_)__ Je suis pas un ragondin !!!
...

Répondre à Castor

2

Hitchy, le jeudi 7 avril 2005 à 17:41:38

OK merci pour les caractères spéciaux mais pour le reste du texte
Voilà la partie du script qui me pose problème :
-----------------------------------
#!/bin/sh
#

cat >>essai.conf
"bonjour ceci est une ligne avec \$unevariable
EOF
------------------------------------

1)Il crée bien le fichier essai.conf, mais il n'y a rien dedans
J'ai essayé en passant par la commande echo, mais toujours rien dans mon fichier.
2)Il ne prend pas en compte le EOF, cad que je suis obligé de faire le ctrl-d manuellemnt pour quitter cat

Je pense que ça tient à pas grand chose....

Répondre à Hitchy

3

Castor, le jeudi 7 avril 2005 à 17:43:29

Essaie ca:

cat 
"bonjour ceci est une ligne avec \$unevariable >>essai.conf
.O
(_)__ Je suis pas un ragondin !!!</gra
s>...

Répondre à Castor

4

Hitchy, le jeudi 7 avril 2005 à 17:54:27

Merci castor, mais ça ne fonctionne pas non plus....
J'ai essayé :
cat
"bonjour ceci est une ligne avec \$unevariable >>essai.conf

cat
"bonjour ceci est une ligne avec \$unevariable" >>essai.conf

j'ai même essayer de remplacer les "" par des ( ) ou {} ou ' ' ou `` ou encore [] mais rien du tout.....

Si il y a des gens qui ont des idées....peut être avec sed..?

Juste pour info, j'ai plusieurs lignes à insérer.

Répondre à Hitchy

5

jipicy, le jeudi 7 avril 2005 à 18:05:35

Salut,

Essaie ça :

[jp@Mandrake tmpfs]$ echo "Ceci est une variable : \$var." >> essai.conf
[jp@Mandrake tmpfs]$ cat essai.conf
Ceci est une variable : $var.
[jp@Mandrake tmpfs]$ echo "Ceci est une autre variable : \$var2." >> essai.conf
[jp@Mandrake tmpfs]$ cat essai.conf
Ceci est une variable : $var.
Ceci est une autre variable : $var2.
[jp@Mandrake tmpfs]$
;-)) Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé. 

Répondre à jipicy

6

Hitchy, le vendredi 8 avril 2005 à 11:00:44

Nickel !!!!
C'est exactement ce doit j'avais besoin.
Sauf que je n'ai pas eu à mettre le "\" devant mes variables.
Est ce parce que ce sont des adresses IP ? je ne sais pas.

Mes lignes dans mon script ressemble desormais à cela :
echo "Ceci est une autre variable : $var2 ." >> essai.conf

Pour info, sur une ligne, j'ai 2 variables(@IP) collé par un tiret "-",
j'ai du noter comme cela :
echo "blabla ${IPDESTINATAIRE}-${IPLOCALE} blabla" >>essai.conf

Merci pour tout, tu m'as enlevé une grande épine du pied !!!

Répondre à Hitchy

7

Xenor, le vendredi 8 avril 2005 à 11:10:01

Salut,
Si tu mets pas de \ devant les $, il va afficher le contenu de la variable, et non pas son nom. Ou alors il faut remplacer les " par des simple '.
Mais apparemment ça te satisfait donc ça roule.
Pour info, et si tu poursuis ton travail dans cette voie, d'autre options très utiles peuvent te servir : les arguments -n et -e pour la commande echo. A explorer. ______________
- X e n o r ---
RTFM rulz !!

Répondre à Xenor

8

np34, le vendredi 8 avril 2005 à 13:50:22

Il y a beaucoup plus simple en shell pour insérer du text dans un autre fichier :

cat > fichier_à_créer << BALISEDEFIN
ici tu mets tout le contenu du fichier_à_créer
formaté comme tu veux
voila c'est tout bon
BALISEDEFIN

Voilou

Répondre à np34

9

LOLITA_SOUM, le lundi 21 janvier 2008 à 21:26:02

J'ai un script executable sur mon pc mai pas avec des autres il lence un programme et il affiche le signal d'interruption

#!/bin/bash
cat /usr/include/asm/signal.h | grep "define SIG" | awk '{ print $2 " " $NF }'
./ton_programme_c.c

le program est

#include <signal.h>
#include <stdio.h>
#include <stdlib.h>

void sigfpe_handler(int signum)
{
printf("Exception détectée!\n");
exit(EXIT_FAILURE);
}

int main(void)
{
struct sigaction new_action;

new_action.sa_handler = sigfpe_handler;
sigemptyset(&new_action.sa_mask);

sigaction(SIGFPE, &new_action, NULL);

int a, b, c;
a = 10; b=0;
c = a/b;

return EXIT_SUCCESS;
}

Répondre à LOLITA_SOUM

10

LOLITA_SOUM, le lundi 21 janvier 2008 à 21:28:30

Merci a tout le monde

Répondre à LOLITA_SOUM

11

dubcek, le mardi 22 janvier 2008 à 09:05:22

Hello
cat /usr/include/asm/signal.h | grep "define SIG" | awk '{ print $2 " " $NF }'
peut être simplifié:
awk '/define SIG/ { print $2 " " $NF }' /usr/include/asm/signal.h

tu essayes d'exécuter le source .c ou ton prog. est-il compilé ?
./ton_programme_c.c

Répondre à dubcek

12

lolo, le mardi 22 janvier 2008 à 09:45:57

Bonjour je voudrai sa voire comment telecharger linux gratuitement merci de me repondre

Répondre à lolo

13

 dubcek, le mardi 22 janvier 2008 à 10:46:26

Correction du post 11
awk '/define SIG/ { print $2 " " $NF }' < /usr/include/asm/signal.h

Répondre à dubcek
Shell Script Bonjour, J'ai besoin d'un spécialiste en Shell script! En fait, je dois rendre compte d'un projet dont le but est de créer un script qui, une fois executer dans une unité de commande linux, générer un index.html dans lequel se trouvera une aborescence... www.commentcamarche.net/forum/affich-2002574-shell-script
Ftp en shell script J'aimerais savoir comment passer en parametres le login et le mot de passe sur la commande ftp dans un shell script pour qu'il envoit des fichiers www.commentcamarche.net/forum/affich-77379-ftp-en-shell-script
Commande cat Bonjour ou plutôt bonsoir à tous, voila je recherche la correspondance sous DOS de la commande cat sous LINUX, merci pour vos réponses. www.commentcamarche.net/forum/affich-1841977-commande-cat
[Linux] Utiliser la commande 'su'Préambule Se connecter sous un autre ID utilisateur avec "su" Démarrer un nouveau shell de connexion avec "su -" Revenir au shell précédent Suspendre le shell du compte root Notes Préambule La commande "su" (Switch User, appelée plus... www.commentcamarche.net/faq/sujet-156-linux-utiliser-la-commande-su
Exécuter un script shellExécution d'un script Pour pouvoir exécuter un script ou un programme en ligne de commande il y a plusieurs possibilités : 1. Le chemin absolu 2. Le chemin relatif 3. Modifier la variable PATH Note: Le Sha-Bang Premièrement,... www.commentcamarche.net/faq/sujet-4627-executer-un-script-shell
[Shell] Accès aux dernières commandes de l'historiqueLe shell Linux/Unix regorge de fonctionnalités permettant de gagner du temps. Ainsi, il est possible de remonter dans l'historique des dernières commandes grâce aux flèches de navigation en appuyant sur la flèche du haut. Mais il y a moyen... www.commentcamarche.net/faq/sujet-971-shell-acces-aux-dernieres-commandes-de-l-historique
Shell script: lire une chaine de caractere daBjr à tous, Je sis débutant en shell script. En fait je veux créer un programme en korn shell qui va me permettre d'aller lire une chaine de caractère dans un fichier et me retourner sa valeur. y a t il une commande qui pemret de faire ça? mERCI D AVANCE www.commentcamarche.net/forum/affich-2933211-shell-script-lire-une-chaine-de-caractere-da
[XP, VISTA] Shell scriptsBonjour à tous, j'aimerais pouvoir automatiser des tâches de maintenance sur mon PC. J'aimerais savoir comment on programme des shell scripts (déclarations, où on se font ces déclarations, etc.). En fait je n'ai aucune expérience dans la... www.commentcamarche.net/forum/affich-2707700-xp-vista-shell-scripts
Exercice shell script (supprimer lignes)Bonjour, Encore un exercice coriace dont je n'arrive pas à me défaire (ca me démoralise), voila l'énnoncé : Écrire un script shell enlever-des-lignes.sh qui prend en premier paramètre un nom de fichier puis une liste d’entier. Ce script doit renvoyer... www.commentcamarche.net/forum/affich-2965755-exercice-shell-script-supprimer-lignes
Systèmes UNIX - Le shellIntroduction au shell L'interpréteur de commandes est l'interface entre l'utilisateur et le système d'exploitation, d'où son nom anglais «shell», qui signifie «coquille». Le shell est ainsi chargé de faire l'intermédiaire entre le système... www.commentcamarche.net/contents/unix/unix-shell.php3
Linux - Le shellIntroduction au shell L'interpréteur de commandes est l'interface entre l'utilisateur et le système d'exploitation, d'où son nom anglais «shell», qui signifie «coquille». Le shell est ainsi chargé de faire l'intermédiaire le système... www.commentcamarche.net/contents/linux/linshell.php3
Commandes LinuxTableau des principales commandes Linux Commande Description équivalent DOS ls liste le contenu d'un répertoire dir cd change de répertoire cd cd .. répertoire parent cd.. mkdir crée un nouveau... www.commentcamarche.net/contents/linux/lincomm.php3