Script Shell qui ne marche pas !

Fermé
Niky ! Messages postés 2 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 17 février 2008 - 17 févr. 2008 à 21:32
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 18 févr. 2008 à 10:07
Bonjour,
J'ai à faire un script de test,
qui affiche si le nom passé en paramètre est fichier, répertoire ou n'existe pas dans le répertoire courant
en gérant les cas d'erreurs du nombre de paramètres entrés.

Voici mon scipt:


#! /bin/bash

echo Veuillez entrer un parametre !
read $p
        if [ $# -ne 1 ]
        then

                if [ $# -eq 0 ]
                then
                echo ERREUR! Vous n avez entre aucun parametre!
                else echo ERREUR! vous avez entre plusieurs parametres!
                fi
        else
                if [ ! -e $p ]
                then
                echo $p n\'existe pas dans le repertoire courant!
                else
                        if [ -f $p ]
                        then
                        echo $p est un fichier
                        else
                                                if [ -d $p ]
                                                then
                                                echo $p est un repertoire
                                                        else
                                                                echo $p n\'est ni fichier ni repertoire
                                                fi
                        fi
                fi
        fi




Merci de m'indiquer l'erreur !
            
                
A voir également:

3 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
17 févr. 2008 à 21:48
Salut,
echo Veuillez entrer un parametre !
read $p
        if [ $# -ne 1 ]
        then
Tu veux faire quoi là ??? Ta comparaison est fausse !

Essaie plutôt :
if [ $# -lt 1 ]
mais il te faut changer le reste aussi, il y a trop de tests et de conditions derrière ;-(
0
Niky ! Messages postés 2 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 17 février 2008
17 févr. 2008 à 22:27
Merci pour ta réponse,
ce que j'entends en effet par if [ $# -ne 1 ], c'est la condition où le nombe de paramètres n'est pas égal à 1 (-ne = not equal).
Sinon, que veut dir le " -lt"?
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
18 févr. 2008 à 10:07
Oups désolé, je me suis un peu planté sur ce coup là ;-(

En fait en te répondant, je répondais en pensant à ta requête dans ce post ;-\

En fait je me suis focalisé sur le "-e" qui teste l'existence d'un fichier ou autre et j'ai complètement laissé de côté le "-ne" ;-[

Juste pour info, le "-lt" (lether than - plus petit que)...

Bon, pour en revenir au script, tu testes en 1er lieu le nombre de paramètres passés au script, mais en fin de compte tu ne passes aucun paramètre au script puisque tu lances ton script normalement "./ton_script.sh" et que tu demandes interactivement l'entrée d'une variable.

Donc dans ton 1er test c'est pas le nombre de paramètres qu'il te faut tester, mais la valeur de "$p"...

;-))
0