Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/07/2007, 11h48   #1
Invité régulier
 
Inscription : mars 2007
Messages : 36
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 36
Points : 8
Points : 8
Par défaut Probleme d'affectation de commande a une variable

Bonjour, j'ai un probleme d'affectation de commande avec mon script et je ne sais pas d'ou il vient :

Mon script :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
#! /bin/sh
 
today=0 
today=`date +%d`
echo $today
set clean = `rm -f -r \`ls | grep -v -e^dataC.*sh$ | grep -v -e^DataOf[0-9]*-[0-9]*-01$\``
if [ "$today" == 01 ]
	then 
	{
		$clean
		echo "log files have been cleaned"
	}
	else
		echo "Date has been checked"
fi
Lors de l'execution de mon script il m'execute a chaque fois la commande dans ma variable clean peu importe la date et pourtant ma conditionnelle marche.

Quelqu'un pourrait-il m'expliquer d'ou vient mon erreur svp?
redpopo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2007, 18h59   #2
Membre expérimenté
 
Avatar de BlaireauOne
 
Inscription : mars 2007
Messages : 469
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mars 2007
Messages : 469
Points : 576
Points : 576
Citation:
Envoyé par redpopo
Lors de l'execution de mon script il m'execute a chaque fois la commande dans ma variable clean peu importe la date et pourtant ma conditionnelle marche.
Il exécute car tu mets des accents graves avant le rm et en fin de ligne ( demande d'exécution )

set clean = `rm -f -r \`ls | grep -v -e^dataC.*sh$ | grep -v -e^DataOf[0-9]*-[0-9]*-01$\``

Pour éviter de supprimer des répertoires, j'utiliserais find :

Code :
1
2
3
4
5
6
7
8
9
10
.../...
if [ "$today" == 01 ]
	then 
		find . -maxdepth 1 -type f  \( ! -name 'dataC*sh' -and ! -name 'DataOf[0-9]*-[0-9]*-01' \) | xargs rm -f
		echo "log files have been cleaned"
	else
		echo "Date has been checked"
fi
.../...
__________________
Loi de Murphy:
La Théorie c'est quand ça ne marche pas mais que l'on sait pourquoi.
La Pratique c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique ça ne marche pas et on ne sait pas pourquoi.
BlaireauOne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/07/2007, 14h45   #3
Invité régulier
 
Inscription : mars 2007
Messages : 36
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 36
Points : 8
Points : 8
Citation:
Envoyé par BlaireauOne
Il exécute car tu mets des accents graves avant le rm et en fin de ligne ( demande d'exécution )

set clean = `rm -f -r \`ls | grep -v -e^dataC.*sh$ | grep -v -e^DataOf[0-9]*-[0-9]*-01$\``

Pour éviter de supprimer des répertoires, j'utiliserais find :

Code :
1
2
3
4
5
6
7
8
9
10
.../...
if [ "$today" == 01 ]
	then 
		find . -maxdepth 1 -type f  \( ! -name 'dataC*sh' -and ! -name 'DataOf[0-9]*-[0-9]*-01' \) | xargs rm -f
		echo "log files have been cleaned"
	else
		echo "Date has been checked"
fi
.../...
Le but etait d'utiliser la commande grep donc ta solution ne me convient malheureusement pas. De toute facon en me cresant bien la tete j'ai trouve la solution. Merci quand meme.
redpopo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h20.


 
 
 
 
Partenaires

Hébergement Web