[SCRIPT-SHELL]
fredo10
Messages postés
32
Statut
Membre
-
mslol -
mslol -
salut a tous ,
j'ai bcp de mal a coder en script shell et j'aimerais avoir de l'aide sur le projet suivant:
Synopsis
bdsh.sh [-k] [-f <db_file>] (put (<clef> | $<clef>) (<valeur> | $<clef>) |
del (<clef> | $<clef>) [<valeur> | $<clef>] |
select [<expr> | $<clef>] |
flush)
Il s'agit d'écrire un script shell émulant les fonctionnalités simples
d'une base de données. Cette base sera contenue dans un unique fichier
"sh.db" dont on pourra éventuellement passer le nom en paramètre grâce à
l'option `-f'.
Les paramètres du script seront les suivants:
- put <clef> <valeur> - Ajoute une clef <clef> contenant la valeur
<valeur>. Si la clef existe déjà, la valeur est écrasée.
Rien n'est affiché.
- del <clef> [<valeur>] - Efface la clef <clef>. Si la valeur est ommise,
la clef reste présente sans contenu. Si la clef n'existe pas ou si la
valeur ne correspond pas à celle de la clef, il ne se passe rien.
Rien n'est affiché.
- flush - Vide toutes les entrées présentes dans la base. Le fichier lui
même n'est pas supprimé.
- select [<expr>] - Permet d'afficher les valeurs dont les clefs
matchent <expr>, ou toutes les valeurs si aucun paramètre n'est passé.
C'est le matching de la commande grep qui est utilisé. On utilisera
pour l'affichage l'ordre du fichier, qui sera l'ordre chronologique
d'insertion ou de modification.
Lorsqu'une valeur doit etre affichée, elle est seule sur une ligne.
Si l'option `-k' est activée, la clef doit aussi etre affichée de la
facon suivante :
<clef>=<valeur>
Pas d'espace ou autres caractères mis à part le '=' entre la clef sa valeur.
merci d'avance pour votre aide.
j'ai bcp de mal a coder en script shell et j'aimerais avoir de l'aide sur le projet suivant:
Synopsis
bdsh.sh [-k] [-f <db_file>] (put (<clef> | $<clef>) (<valeur> | $<clef>) |
del (<clef> | $<clef>) [<valeur> | $<clef>] |
select [<expr> | $<clef>] |
flush)
Il s'agit d'écrire un script shell émulant les fonctionnalités simples
d'une base de données. Cette base sera contenue dans un unique fichier
"sh.db" dont on pourra éventuellement passer le nom en paramètre grâce à
l'option `-f'.
Les paramètres du script seront les suivants:
- put <clef> <valeur> - Ajoute une clef <clef> contenant la valeur
<valeur>. Si la clef existe déjà, la valeur est écrasée.
Rien n'est affiché.
- del <clef> [<valeur>] - Efface la clef <clef>. Si la valeur est ommise,
la clef reste présente sans contenu. Si la clef n'existe pas ou si la
valeur ne correspond pas à celle de la clef, il ne se passe rien.
Rien n'est affiché.
- flush - Vide toutes les entrées présentes dans la base. Le fichier lui
même n'est pas supprimé.
- select [<expr>] - Permet d'afficher les valeurs dont les clefs
matchent <expr>, ou toutes les valeurs si aucun paramètre n'est passé.
C'est le matching de la commande grep qui est utilisé. On utilisera
pour l'affichage l'ordre du fichier, qui sera l'ordre chronologique
d'insertion ou de modification.
Lorsqu'une valeur doit etre affichée, elle est seule sur une ligne.
Si l'option `-k' est activée, la clef doit aussi etre affichée de la
facon suivante :
<clef>=<valeur>
Pas d'espace ou autres caractères mis à part le '=' entre la clef sa valeur.
merci d'avance pour votre aide.
A voir également:
- Bdsh epitech
- Classic shell - Télécharger - Personnalisation
- Script vidéo youtube - Guide
- Mas script - Accueil - Windows
- Ghost script - Télécharger - Polices de caractères
- Script cmd - Guide
8 réponses
ben j'ai vu le lien et merci pour l'assistance que tu m'apporte mais je n'ai pas le droit d'utiliser getopts pour le projet donc je suis vraiment coince. est ce ke il n'ya pas une autre methode pour y arriver sans getopts?
merci d'avance.
merci d'avance.
Donc tu dois réécrire getopt...
Belles méthodes pédagogiques.
Les étudiants ne serons donc pas capables
* de lire une documentation
* de réutiliser le logiciel existant
* de faire preuve d'esprit critique.
* intégrer des bibliothèques existantes
zt ne seront pas très performants en somme.
On ferait mieux d'envoyer les enseignants en entreprise (comme chez les chinois...)
Des enseignants? Non. Des enculeurs de mouches.
Johan
Belles méthodes pédagogiques.
Les étudiants ne serons donc pas capables
* de lire une documentation
* de réutiliser le logiciel existant
* de faire preuve d'esprit critique.
* intégrer des bibliothèques existantes
zt ne seront pas très performants en somme.
On ferait mieux d'envoyer les enseignants en entreprise (comme chez les chinois...)
Des enseignants? Non. Des enculeurs de mouches.
Johan
Renseigne toi tout d'abord sur la fonction getopts qui permet de gerer les arguments fournit à un script. Ca va formatement de simplifier la vie dans un premier temps.
Ensuite à tu une idée de comment est formaer ton fichier sh.db ?
Ensuite à tu une idée de comment est formaer ton fichier sh.db ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
je ne connais pas cette fonction getops est ce ke tu peux m'en dire plus?
Sinon j'ai essaye de faire quelque chose et j'ai eu droit a un message d'erreur.voici ce que j'ai tape:
if [$1="put"] ; then
echo "$2 $3" >> sh.db
else
echo Syntax error : Usage : put "<clef> <valeur>"
fi
if [$1="flush"] ; then
> sh.db
fi
si tu vois kelke chs d'anormal qui expliquerais pkoi j'ai des messages d'erreurs fais moi signe.merci.
Sinon j'ai essaye de faire quelque chose et j'ai eu droit a un message d'erreur.voici ce que j'ai tape:
if [$1="put"] ; then
echo "$2 $3" >> sh.db
else
echo Syntax error : Usage : put "<clef> <valeur>"
fi
if [$1="flush"] ; then
> sh.db
fi
si tu vois kelke chs d'anormal qui expliquerais pkoi j'ai des messages d'erreurs fais moi signe.merci.
Renseigne toi vraiment sur getopts (je site) : "Ce puissant outil analyse les arguments en ligne de commande passés au script."
http://abs.traduc.org/abs-3.7-fr/internal.html : recherche getopts sur cette page, y'a un petit d'info pour débuter.
Ca sera beaucoup plus propre que des test dans tous les sens.
Sinon pour tes premieres lignes de code
if [$1="put"]
[ est en faite une commande (c'est idem à la commande test) et $1 = "put" ] sont les paramètre de la commande [ et donc pour fournir des parametre à une commande il faut des espaces :
if [ $1 = "put" ]
--
Formation Unix/Linux : *** URL retirée par le webmaster de CommentCaMarche.net en raison de sa non-conformité à la charte. Prière d'inclure des URL vers vos sites persos dans le profil uniquement ***
http://abs.traduc.org/abs-3.7-fr/internal.html : recherche getopts sur cette page, y'a un petit d'info pour débuter.
Ca sera beaucoup plus propre que des test dans tous les sens.
Sinon pour tes premieres lignes de code
if [$1="put"]
[ est en faite une commande (c'est idem à la commande test) et $1 = "put" ] sont les paramètre de la commande [ et donc pour fournir des parametre à une commande il faut des espaces :
if [ $1 = "put" ]
--
Formation Unix/Linux : *** URL retirée par le webmaster de CommentCaMarche.net en raison de sa non-conformité à la charte. Prière d'inclure des URL vers vos sites persos dans le profil uniquement ***