Garder le nom et modifier une extension dans une boucle

Résolu
LOLplz -  
 LOLplz -
Bonjour,
j'ai plusieurs problème dans mon script bash et j'aimerais avoir votre aide.
Je vous explique, je voudrais savoir comment on fait pour exécuter un script sur plusieurs log d'un dossier et rediriger le résultat en gardant le nom mais en modifiant l'extension (de .log à .html).

dossier='/truc/pgfouine-1.1/dl/log/'
script='/truc/pgfouine-1.1'
statTab='/truc/pgfouine-1.1/dl/statistiqueTab'

for log in $dossier
do
$script/pgfouine.php -top 50 -logtype stderr -format html -keepformatting -memorylimit 1073741824 -file $dossier > $statTab/GARDER LE NOM.MODIFIER L'EXENTION
done


A voir également:

3 réponses

zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Salut,

$ var=/chemin/rep/fichier.log

$ echo ${var}
/chemin/rep/fichier.log

$ echo ${var%.*}.html
/chemin/rep/fichier.html

0
LOLplz
 
./testscript2: line 9: $script/pgfouine.php -top 50 -logtype stderr -format html -keepformatting -memorylimit 1073741824 -file $dossier > ${statTab.*}html: bad substitution
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
De rien ;-(

Et le "%" t'en a fait quoi ? Ce n'est pas en option !

Voir message de l'ami qqchquicommenceparQ ci-dessous et les références au man ;-)
0
LOLplz
 
Désolé j'ai oublié de te remercié
c'est vraiment gentil
0
LOLplz
 
Quand j'execute le script tout va bien mais il ne me redirige pas le fichier et ne me change pas l'extension

dossier='/truc/pgfouine-1.1/dl/log/'
script='/truc/pgfouine-1.1'
statTab='/truc/pgfouine-1.1/dl/statistiqueTab'


for dossier in $dossier/*.log
do
$script/pgfouine.php -top 50 -logtype stderr -format html -keepformatting -memorylimit 1073741824 -file $dossier > ${statTab%.*}.html
done
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
$script/pgfouine.php -top 50 -logtype stderr -format html -keepformatting -memorylimit 1073741824 -file $dossier > $statTab/${dossier%.*}.html
0
Utilisateur anonyme
 
salut,

for f in $dossier/*.log
do echo "monScript $f > ${f%.*}.html"
done
voir man bash /Remplacement des paramètres
0
LOLplz
 
Merci de ta réponse,
Le f reprensente quoi dans ton exemple ?
0
LOLplz
 
Je sais pas comment initialisé ma boucle.
Pour faire :
Pour les logs dans $dossier.
Parcourir le fichier puis leur executer une commande et renvoyer le resultat du script en gardant le nom mais en changent l' extension (de .log à html).

#!/bin/bash
dossier='/Users/truc/pgfouine-1.1/dl/log'
script='/Users/truc/pgfouine-1.1'
statTab='/Users/truc/pgfouine-1.1/dl/statistiqueTab'

i=

for i in $dossier/*.log
do
$script/pgfouine.php -top 50 -logtype stderr -format html -keepformatting -memorylimit 1073741824 -file $dossier${i} > $statTab${i%.*}.html
done

Le problème vient surement du i mais je sais pas comment l'utiliser
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Voir réponse #25

man bash et notamment la commande "set -x".
0
LOLplz
 
tu en pense quoi ?

#!/bin/bash
dossier='/Users/truc/pgfouine-1.1/dl/log'
script='/Users/truc/pgfouine-1.1'
statTab='/Users/truc/pgfouine-1.1/dl/statistiqueTab'

log='/postgresql-2013-*'

for log in $dossier/*.log
do
$script/pgfouine.php -top 50 -logtype stderr -format html -keepformatting -memorylimit 1073741824 -file $dossier${log} > $statTab${log%.*}.html
done
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
La même chose qu'en #12 ;-(
0
LOLplz
 
J'ai trouvé :

#!/bin/bash
dossier='/Users/truc/pgfouine-1.1/dl/log'
script='/Users/truc/pgfouine-1.1'
statTab='/Users/axel/Desktop/pgfouine-1.1/dl/statistiqueTab'

log='postgresql-2013-'
for log in $dossier/*.log
do
$script/pgfouine.php -top 50 -logtype stderr -format html -keepformatting -memorylimit 1073741824 -file $log > ${log%.*}.html
done

Le problème venais de log
0
LOLplz
 
encore merci de ton aide !
0