Erreur script SH
touillettes
-
touillettes -
touillettes -
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
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
A voir également:
- Erreur script SH
- Script vidéo youtube - Guide
- Mas script - Accueil - Windows
- Erreur 0x80070643 - Accueil - Windows
- Erreur 4101 france tv - Forum Lecteurs et supports vidéo
- J'aime par erreur facebook notification - Forum Facebook
2 réponses
Salut,
Pour le 1 : if [ $1 = "select"]
Il faut des espaces autour des crochets :
et il vaut mieux aussi entourer chaque variable par des quotes doubles (sauf emploi des doubles crochets :
Pour le 2 :
Voir à ce sujet dans la FAQ :
Sed - Introduction à SED - Part I
Sed - Introduction à SED - Part II
Sed - Introduction à SED - Part III
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