IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

probleme de programmation en shell


Sujet :

Shell et commandes GNU

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 560
    Par défaut probleme de programmation en shell
    Bonjour
    je n'arrive pas a debuguer un de mes programmes .Le voici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    for i in `~/COURS_TD_TP/SE/.sh-trash/affiche.sh`
    do
     
    	if [  $i ==  $1 ] ; then
    		while [ $a -lt `cat ~/COURS_TD_TP/SE/.sh-trashbox/INDEX|cut -d' ' -f2 |tr / ' '|head -n$c |tail -n1|wc -w` ]		
    		do	
    			if [ ! -e `cat ~/COURS_TD_TP/SE/.sh-trashbox/INDEX |cut -d ' ' -f2 |head -n$c |tail -n1 |cut -d/ -f1-$a` ];then
    				mkdir `cat ~/COURS_TD_TP/SE/.sh-trashbox/INDEX |cut -d ' ' -f2 |head -n$c |tail -n1 |cut -d/ -f1-$a`
    			fi
    			a=`expr $a + 1 `
     
    		done
    		tmp=`cat ~/COURS_TD_TP/SE/.sh-trashbox/INDEX |head -n$c |tail -n1 |cut -d ' ' -f1`
    		e=`expr $a + 1`
    		tmp1="~/COURS_TD_TP/SE/.sh-trashbox/$tmp"
    		tmp2=`cat ~/COURS_TD_TP/SE/.sh-trashbox/INDEX |cut -d ' ' -f2 |head -n$c |tail -n1 |cut -d/ -f$e`
    		gunzip -c "$tmp1" > "$tmp2"
    		rm  $tmp1
     
    	else
    	c=`expr $c + 1`
    	echo $c
    	fi
     
     
    done

    Il me met un probleme quand je compare $1 == $i .
    En fait mon programme utilise un autre programme affiche.sh .ce programme liste des non de fichier .Et $1 doit etre un de ces nom de fichier .Je comprend pas pourquoi je n'arriva pas a comparer ces 2 strings .

    Quelqu'un aurait une solution ?
    D'avance merci .

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 81
    Par défaut
    $1 est censé être un paramètre de ton script, c'est-à-dire que si tu ne passes pas de paramètre à ton script (lors de l'appel ex : ./prog.sh param => param est un paramètre de prog.sh) il te donnera une erreur lorsque tu vas vouloir le comparer à $i.

  3. #3
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Par défaut
    c'est pas très propre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ~/COURS_TD_TP/SE/.sh-trashbox/
    vu le nombre de fois où tu utilises ça, peut être que tu aurais pu le mettre dans une variable ?

    A la place de backquote `, tu peux utiliser $().
    C'est plus lisible, je trouve.
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 560
    Par défaut re
    merci de pour vos reponses mais en fait il me met une erreur meme qd je met un parametre dans $1 .Il me dit que l'operateur == est inattendu

  5. #5
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    == compare des chaines de carateres

    utilises peut etre la syntaxe forcee ${varname}

    ce qui donne

    if [ ${i} == ${1} ] ; then ....


    a moins que ksh ne prenne qu'un signe '='

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 560
    Par défaut re
    merci mon programme fonctionne enfin .
    bonsoir

Discussions similaires

  1. Renvoie d'un programme au shell...?
    Par Invité dans le forum Linux
    Réponses: 4
    Dernier message: 13/05/2005, 15h18
  2. [TP]Problème de programme exécutable en mode graphique
    Par GoodVibe dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 24/09/2004, 09h47
  3. Livre sur la programmation linux (shell et noyau)
    Par Tchetch dans le forum Linux
    Réponses: 10
    Dernier message: 07/07/2004, 08h27
  4. [Kylix] probleme execution programme
    Par vin's dans le forum EDI
    Réponses: 1
    Dernier message: 31/03/2004, 12h25
  5. [Kylix] probleme pour lancer le shell
    Par miky dans le forum EDI
    Réponses: 5
    Dernier message: 13/08/2002, 09h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo