Script ubuntu : cherchez l'erreur
Résolu
Bonjour,
très bien, je cherche à realiser un script.
ce script que fait-il ? il prend en parametre un fichier appelons le b.
dans b il y a deux colonnes de texte, dans la première il y a des lettres et dans la deuxième des mots :
d connexion
f arant
e rzigova
d rangeant
l'idée du script est de créer un fichier si la ligne commence par un f, un répertoire si elle commence par un d, si la lettre differe il doit faire un echo "lettre" : type inconnu.
jusqu'ici j'ai ça :
#!/bin/bash
# script creationArboFichier2.sh
if [ $# -ne 1 ]
then
echo Le script doit etre appele avec exactement un seul parametre
exit 1
fi
if [ ! -f $1 ]
then
echo $1 doit etre un nom de fichier
exit 1
fi
while read line
do
if [ "${line:0:1}" = "d" ]
then
echo "Création du répertoire ${line:2}"
mkdir ${line:2}
elif [ "${line:0:1}" = "f" ]
then
echo "Création du fichier ${line:2}"
touch ${line:2}
else
echo "Lettre : \"${line:0:1}\" inconnue au bataillon."
fi
done < $1
lorsque je rajoute set -xv , j'ai ça :
voici le message d'erreur sur elif :
ubuntu@ubuntu:~/a$ ./script b
if [ $# -ne 1 ]
then
echo Le script doit etre appele avec exactement un seul parametre
exit 1
fi
+ '[' 1 -ne 1 ']'
if [ ! -f $1 ]
then
echo $1 doit etre un nom de fichier
exit 1
fi
+ '[' '!' -f b ']'
while read line
do
if [ "${line:0:1}" = "d" ]
then
echo "Création du répertoire ${line:2}"
mkdir ${line:2}
elif [ "${line:0:1}" = "f" ]
./script: line 22: erreur de syntaxe près du jeton `elif' inattendu
'/script: line 22: `elif [ "${line:0:1}" = "f" ]
très bien, je cherche à realiser un script.
ce script que fait-il ? il prend en parametre un fichier appelons le b.
dans b il y a deux colonnes de texte, dans la première il y a des lettres et dans la deuxième des mots :
d connexion
f arant
e rzigova
d rangeant
l'idée du script est de créer un fichier si la ligne commence par un f, un répertoire si elle commence par un d, si la lettre differe il doit faire un echo "lettre" : type inconnu.
jusqu'ici j'ai ça :
#!/bin/bash
# script creationArboFichier2.sh
if [ $# -ne 1 ]
then
echo Le script doit etre appele avec exactement un seul parametre
exit 1
fi
if [ ! -f $1 ]
then
echo $1 doit etre un nom de fichier
exit 1
fi
while read line
do
if [ "${line:0:1}" = "d" ]
then
echo "Création du répertoire ${line:2}"
mkdir ${line:2}
elif [ "${line:0:1}" = "f" ]
then
echo "Création du fichier ${line:2}"
touch ${line:2}
else
echo "Lettre : \"${line:0:1}\" inconnue au bataillon."
fi
done < $1
lorsque je rajoute set -xv , j'ai ça :
voici le message d'erreur sur elif :
ubuntu@ubuntu:~/a$ ./script b
if [ $# -ne 1 ]
then
echo Le script doit etre appele avec exactement un seul parametre
exit 1
fi
+ '[' 1 -ne 1 ']'
if [ ! -f $1 ]
then
echo $1 doit etre un nom de fichier
exit 1
fi
+ '[' '!' -f b ']'
while read line
do
if [ "${line:0:1}" = "d" ]
then
echo "Création du répertoire ${line:2}"
mkdir ${line:2}
elif [ "${line:0:1}" = "f" ]
./script: line 22: erreur de syntaxe près du jeton `elif' inattendu
'/script: line 22: `elif [ "${line:0:1}" = "f" ]
A voir également:
- Script ubuntu : cherchez l'erreur
- Script vidéo youtube - Guide
- Ubuntu 32 bits - Télécharger - Systèmes d'exploitation
- Mas script - Accueil - Windows
- Ghost script - Télécharger - Polices de caractères
- Ubuntu portable - Télécharger - Systèmes d'exploitation
4 réponses
Merci de cette précision jipicy :-) Bon j'ai testé le 1er script il marche. Voilà ce que ça donne :
(mando@aldur) (~/pouet) $ ls b pouet.sh (mando@aldur) (~/pouet) $ set -xv && ./pouet.sh b set -xv && ./pouet.sh b + set -xv + ./pouet.sh b Création du répertoire connexion Création du fichier arant Lettre : "e" inconnue au bataillon. Création du répertoire rangeant (mando@aldur) (~/pouet) $ ls ls + ls --color=auto arant b connexion pouet.sh rangeantBref je ne vois pas trop où est le problème ?
Ben oui ça marche dans la mesure où c'est une chaîne de caractère qui est comparée et non pas un nombre ;-))