Posez votre question Signaler

Erreur script SH

touillettes - Dernière réponse le 17 oct 2009 à 14:09
Bonjour, je devellope un script shell qui doit émuler les les fonctionalité simple d'une base de donnée mais 2 probléme se pose a moi je vous les expose
Probléme n°1 :
Voila mon script :
#!/bin/sh
file=sh.db
usage()
{
echo "bdsh.sh [-k] [-f <db_file>] (put (<clef> | $<clef>) (<valeur> | $<clef>) |
del (<clef> | $<clef>) [<valeur> | $<clef>] |
select [<expr> | $<clef>] )"
}
while getopts k:f: option
do
case $option in
f) file="$OPTARG"
shift 2
;;
k) echo lol;;
esac
done
check()
{
echo "FONCTION SELECT"
if [ $1 = "select"]
then
echo "lol"
fi
}
check
exit 0
et quand je l'éxécute
$> sh bdsh.sh -f lol select
FONCTION SELECT
[: 33: missing ]
Pourriez vous me dire a quoi correspond [: 33: missing ] ?
problème n°2 :
est t'il possible via un sed ou un grep de rediriger le résultat dans le mếme fichier que celui sur lequel j'éffectue le traitement ?
exemple
Je veux supprimer les lignes contenant le mot bonjour dans le fichier test
le fichier test :
lol
Bonjour
oki
ma ligne de commande :
$> sed '/Bonjour/d' test
lol
oki
$>
$> sed '/Bonjour/d' test > test
$>
le fichier test devient vide
auriez vous une technique sans fichier intermédiaire pour rediriger le résultat dans le fichier sans en effacer tout le contenu ?
merci d'avance
Lire la suite 

Erreur script SH »

2 réponses
Réponse
+0
moins plus
Salut,

Pour le 1 : if [ $1 = "select"]
Il faut des espaces autour des crochets :

if [ $1 = "select" ] 

et il vaut mieux aussi entourer chaque variable par des quotes doubles (sauf emploi des doubles crochets :

if [ "$1" = "select" ] ou if [[ $1 = "select" ]]


Pour le 2 :

sed -i.bak '/Bonjour/d' test 

Voir à ce sujet dans la FAQ :
Sed - Introduction à SED - Part I
Sed - Introduction à SED - Part II
Sed - Introduction à SED - Part III
Ajouter un commentaire
Réponse
+0
moins plus
Merci :)
Ajouter un commentaire
Ce document intitulé « erreur script SH » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook