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 :

Erreur dans mon script bash


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2018
    Messages : 2
    Par défaut Erreur dans mon script bash
    Bonjour tout le monde!
    J'ai besoin de votre aide.
    Je tente de faire une calculatrice en bash! J'obtiens cette erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ./calculatrice: ligne 2 : [: -eq : opérateur unaire attendu

    Je vois qu'il s'attend à un nombre et non un char, qu'est-ce que je dois faire?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #!/bin/bash
    if [ $2 -eq "+" ] || [ $2 -eq "-" ] || [ $2 -eq "*" ] || [ $2 -eq "/" ];then
    echo $(($1 $2 $3))
    else
    echo "erreur"
    fi

  2. #2
    Membre émérite
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2012
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2012
    Messages : 381
    Par défaut
    Bonsoir,

    Essaye de remplacer -eq par =

    -eq fait des comparaisons avec des nombres, et là +, -, * et / sont des chaînes.

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2018
    Messages : 2
    Par défaut
    Bonsoir.

    Merci!

    Maintenant le if fonctionne, sauf que le if ne détecte pas l'étoile *

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 651
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut
    Bonjour,

    comment passes-tu l'astérisque (*) au script ?
    il faut le protéger, sinon ça envoie la liste des fichiers du répertoire courant !

    PS: il y a plus "simple" que tous ces tests enchaînés :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    case $2 in
    [-*/+]) echo $(($@))
    ;;
    *) echo "problème avec \$2 : $2" >&2
    ;;
    esac
    il faudrait aussi tester que tu as bien trois arguments, et que le premier et le troisième sont des nombres.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

Discussions similaires

  1. [GD] Redimension d'image - plusieurs erreurs dans mon script
    Par Henry9 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 18/02/2007, 10h58
  2. Erreur dans mon script
    Par dcollart dans le forum Linux
    Réponses: 3
    Dernier message: 21/09/2006, 15h02
  3. Dessin avec Imager.. erreur dans mon script
    Par Chekov dans le forum Modules
    Réponses: 2
    Dernier message: 18/06/2006, 14h14
  4. erreur dans mon script
    Par Swata dans le forum Langage
    Réponses: 4
    Dernier message: 21/09/2005, 00h02
  5. [langage]erreur dans mon script
    Par Fabouney dans le forum Langage
    Réponses: 11
    Dernier message: 30/06/2005, 14h58

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