Derniers journaux de mouquiette :
- [30/10@16:02] probleme CSS
- [27/10@18:45] Gaim et MSN pbs
- [24/10@16:22] Gnome 2.2 et 2.4 : pb
- [07/10@21:36] pb compilation
- [28/09@10:19] Kernel 2.6.0-test6
- [30/08@22:04] OOo 1.1, et fluxbox
- [20/08@18:21] specifier fichier log iptables
- [10/08@10:05] i2c sensors et 2.6.0-test3
- [06/08@20:39] Bruxelles lance un ultimatum à Microsoft
- [06/08@12:45] pb kernel 2.6.0-test2
- [04/08@14:32] Des idées de programme C
- [01/08@22:26] Pirater Windows en jouant de la musique
- [01/07@16:09] Bug au niveau de la moyenne ?
- [01/07@11:26] MozDev réponds plus ?
- [18/06@17:39] Eclipse et C
- [15/06@15:13] Palm Zire + Linux => marche pas
- [30/05@22:17] Programmation C et GTK+
- [30/05@22:16] Structure en C et GTK
- [29/05@22:02] kernel 2.5.70
- [18/05@16:39] Choix distrib
Journal : probleme programation bash
Posté par Toto () le 15 novembre 2003Je me suis mis à la programmation bash aujourd'hui, et je rencontre un petit probleme. Un exemple valant mieux qu'un long discours :
morceau de script :
for words in $($MYSQL_CMD | grep -v row | grep -v words:)
do
if ! grep "$(cat ${TMP_DIR}${words})" $TMP_FILE >/dev/null 2>&1
then
echo -e \\n >> $TMP_FILE
echo "*****************************" >> $TMP_FILE
echo -e \\n >> $TMP_FILE
cat ${TMP_DIR}${words} >> $TMP_FILE
fi
done
Résultat attendu :
*******************
Une news
*******************
Une autre news
Résultat obtenu ;
******************
Une news
Une autre news
résultat de la commande Mysql :
******* row 1 *******
words:
Une news
Une autre news
Comment faire pour que cela marche ?
Merci de vos réponses.
> Lire le journal (2 commentaires, moyenne: 2).
Re: probleme programation bash
Bon d'abord:
echo -e \\n >> $TMP_FILE
c'est un peu redondant, un simple echo >> $TMP_FILE sera amplement suffisant.
Ensuite si j'ai bien compris la requete sql te renvoi des noms de fichiers contenant tes news ? (rq en passant l'interet d'une bdd
c'est d'eviter de stocker des trucs a l'exterieur mais passonts).
si ta commande te renvoi des noms avec espace comme tu le dit alors ton script va avoir besoin d'un gros dégraissage.
Si tu veut pas te faire chier, utilise perl, c'set 10x plus adapté a ce que tu veut faire (Practical Extraction and Report Langage)
avec un module sql en plus c'est encore plus simple:
#!/usr/bin/perl -w
use DBI;
# note les champs peuvent etre initialiser via $ARGV[]
my $database = "";
my $hostname = "";
my $port = "";
my $dsn = "DBI:mysql:database=$database;host=$hostname;port=$port";
my $user = "";
my $password = "";
my $dbh = DBI->connect($dsn, $user, $password);
my $newsbase = "/tmp";
$r = $dbh->prepare("SELECT row FROM foo WHERE bla");
$r->execute();
while (my ($title) = $r->fetchrow_array()) {
if (open (NEWS, "<$newsbase/$title")) {
$news = "";
while () {
chop;
$news .= " ".$_;
}
close NEWS;
write();
}
}
format STDOUT_TOP =
News Report
.
format STDOUT =
************************
Titre: @<<<<<<<<<<<<<<<<
$title,
@*
$news
.
tu peut aussi ouvrir un fichier et ecrire dedans (write(OUTFILE); ou print OUTFILE "";)
enfin tu peut tout quoi.
Il [e2fsck] a bien démarré, mais il m'a rendu la main aussitot en me disant "houlala, c'est pas beau à voir votre truc, je préfèrerai que vous teniez vous même la tronçonneuse" (traduction libr
-
[^]Re: probleme programation bash
Les journaux sont destinés à des informations qui ne sont pas suffisamment intéressantes
pour être validées en dépêche (sinon n'hésitez pas à proposer votre information en
dépêche), qui sont sans rapport avec Linux ou le libre, ou simplement pour donner votre
avis. Si vous désirez poser une question, merci d'utiliser 

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.