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 :

problème sur un script qui calcule une variable maxi affichant le maximum d'une liste d'entier de paramètres


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2018
    Messages : 2
    Par défaut problème sur un script qui calcule une variable maxi affichant le maximum d'une liste d'entier de paramètres
    Bonjour à tous !
    Je suis débutante et j'ai crée ce script permettant de calculer dans la variable nommée maxi et affiche le maximum d’une liste d’entiers passée en paramètres. Le nombre de paramètres n'étant pas fixé.
    Mais ça ne fonctionne pas , il y a juste la sortie d'erreur qui fonctionne.
    Pouvez-vous m'éclairer?
    Par avance, merci

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    #!/bin/bash
    # Explication de la commande maximum
    function isnum ()
    #fonction qui renvoie 0 (vrai) quand l'argument qui lui est passé en paramètre est un nombre (positif ou négatif), 1 sinon
    {
      	 if [[ "$1" =~ ^[-+]?[0-9]+$ ]];
    		then
         		 return 0
       		else
         		 return 1
      	 fi
    }
    function aide ()
    # affiche l'aide de la commande (si $1 = "--help")
    {
    	echo "Usage : maximum entier1 entier2 ... entierN."
    }
     
    	if [ $# -eq 0 ]; # Le cas où aucun paramètre n'est entré
    		then
          			echo "Il n'y a pas de parametres"
    	aide >&2
    	elif test $1 = "--help" # le Cas où l'utilisateur demande de l'aide.
     		 then
     			 aide >&2
    	else
    		for i
      		do
    			if isnum $?
    			then
    				echo $?
    							else
    				echo "$? n'est pas un entier !" >&2
    			fi
     		done
    	fi
     
    	maxi=$1
    		for i
    		 do
    		   if [ $i -gt $maxi ]
    		     then maxi=$i
    		  fi
    	      done
    	exit 0

  2. #2
    Membre émérite
    Avatar de emixam16
    Homme Profil pro
    Chercheur en sécurité
    Inscrit en
    Juin 2013
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Chercheur en sécurité

    Informations forums :
    Inscription : Juin 2013
    Messages : 335
    Par défaut
    Bonjour,

    J'ai regardé ton code rapidement:

    Tu as (au moins) deux erreurs évidentes :

    - Tu as des echo $?. Tu voulais écrire echo $i.
    - Tu n'affiche même pas le résultat!! Un echo "Max = " $maxi pourrait aider.

    Bonne journée

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2018
    Messages : 2
    Par défaut
    merci beaucoup pour vos réponses, j'ai modifié et tout fonctionne

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    Pour tracer le fonctionnement de ton script, tu pourrais ajouter la commande set -vx au début afin d'afficher les lignes de programmes exécutées et la manière dont elles sont interprétées.

    Deux petite pistes pour comprendre tes erreurs :
    $? affiche la valeur de retour de la dernière commande exécutée
    $i affiche la valeur de la variable i
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Afficher la valeur d'une variable et non son nom dans une cellule
    Par dafchap dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/04/2016, 19h58
  2. Réponses: 6
    Dernier message: 28/05/2014, 14h16
  3. Réponses: 1
    Dernier message: 09/09/2011, 16h38
  4. Réponses: 4
    Dernier message: 10/10/2010, 23h06
  5. Aide pour un script qui calcule le temps passé depuis une date
    Par Mooneer dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 25/05/2008, 15h23

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