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 :

error token is "08"


Sujet :

Shell et commandes GNU

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 20
    Par défaut error token is "08"
    Bonjour,

    Je suis nouveau dans le domaine de la programmation SHELL(...) et je dois lancer un shell avec param date comme suivant YYYYMMDD

    ./upgr.sh 20080825


    lors du lancement j'ai l'erreur suivante: value too great for base (error token is "08")


    Merci de m'aidé a résoudre se problème ou me donné un exemple d'un programme avec la date

    Merci d'avance.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    Commence déjà par montrer le code de ton script.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 20
    Par défaut
    en mp

  4. #4
    Invité
    Invité(e)
    Par défaut
    Non pas en mp.

    Ce n'est pas un secret d'état

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 20
    Par défaut
    c'est le script de l'ets la ou je travail

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 20
    Par défaut
    voila meme si j'ecri ca

    $ echo $((09+7))
    bash: 09: value too great for base (error token is "09")

    ca me donne tjr même erreur.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Salut,

    Le shell ne reconnait la base sur laquelle tu travailles lorsque tu lui fournis un chiffre tel que 09.

    Il faut donc lui spécifier la base:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo $((10#09+7))
    16

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 20
    Par défaut
    Merci deja pour la precision et la rapidité
    mon autre probleme:
    le déroulement du script:

    ./database -i(i ici pour le menu dump)
    1) Ajouter une base 3) Désactiver une base
    2) Lister les bases 4) Quitter

    Quelle action souhaitez-vous entreprendre ? 1 ----1=ma reponse:d

    et la j'ai une question pour la date
    Le format de saisie de la date est : AAAAMMJJ
    A quelle date souhaitez-vous le ajouter la base? 20080825
    ./reinittab: 08: value too great for base (error token is "08")



    la je peux pas faire ((((10#20080825))))


    merci vraiment et d'avance.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Mets les lignes de codes qui posent problème ici !

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    rep=""
    	while test -z "$rep"
    	do
    		echo ""
    		echo "Le format de saisie de la date est : AAAAMMJJ"
    		read -n 8 -p "A quelle date souhaitez-vous la ....? " -t 60 rep
    		echo ""
    		db_verif_date_db "$rep"
    		if test $? -ne 0 ; then
    			echo "Merci de respecter le format de saisie."
    			rep=""
    		fi
    		echo ""
    	done

  11. #11
    Invité
    Invité(e)
    Par défaut
    et le code de cette fonction?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    easidb_verif_date_db "$rep"

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 20
    Par défaut
    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
    46
    db_verif_date_db () {
    if test $db_debug -eq 1 ; then
    	set -x
    echo "db_verif_date_db" 1>&2
    fi
    	local -i ret=0
    	reinit_day="$1"
     
    	if test -z "$reinit_day" ; then
    		echo "Attention : Le champ < date de début > de creation n'est pas renseigné." 1>&2
    		ret=-1
    		return $ret
    	fi
    	if test -z "$(echo "$reinit_day" |grep "^[0-9]\{8\}$")" ; then
    		echo "La date de réinit  $reinit_day est mal formatée." 1>&2
    		echo "Elle doit comporter 8 chiffres." 1>&2
    		ret=-1
    		return $ret 
    	fi
     
    	reinit_annee="$(echo "$reinit_day"|sed -e "s/^\([0-9]\{4\}\)[0-9]\{2\}.*/\1/")"
    	annee="$(date +%Y)"
    	let "annee1=$annee+1"
    	if test -z "$(echo "$reinit_day" |grep -E "^$annee|^$annee1")" ; then
    		echo "L'année de la date de réinit $reinit_day est mal formatée." 1>&2
    		echo "date = $reinit_day" 1>&2
    		ret=-1
    		return $ret 
    	fi
    	reinit_mois="$(echo "$reinit_day"|sed -e "s/^[0-9]\{4\}\([0-9]\{2\}\).*/\1/")"
    	if test $reinit_mois -lt 1 -o $reinit_mois -gt 12 ; then
    		echo "Le mois dans $reinit_day est erroné." 1>&2
    		ret=-1
    		return $ret
    	fi
     
    	reinit_jour="$(echo "$reinit_day"|sed -e "s/^[0-9]\{4\}[0-9]\{2\}\([0-9]\{2\}\)$/\1/")"
    	nb_jour_du_mois=${mois_de_annee[$reinit_mois]}
    	if test $reinit_jour -lt 1 -o $reinit_jour -gt $nb_jour_du_mois ; then
    		echo "Le jour dans $reinit_day est erroné." 1>&2
    		ret=-1
    		return $ret
    	fi
     
    	return $ret
    }

  13. #13
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    let "annee1=10#$annee1+1"
    Il faut voir si c'est le 08 du mois ou le 08 de l'année (2008)

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 20
    Par défaut
    Merci pour tt les reponse deja mais tjr même probleme

  15. #15
    Membre émérite Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Par défaut
    Bonjour,

    J'ai l'impression que si le code echo $((09+7)) sort une erreur, c'est que les 0 en début de nombre ne sont pas acceptés. Donc, dans la date que tu fournis, l'année ne pose pas de problème (il y aura toujours le 2 devant), par contre le mois et le jour ne vont pas marcher pour les neuf premiers jours de chaque mois et pour les neufs premiers mois de chaque année.

    Dans la fonction que tu as bien voulu exposer, plutôt que de modifier le code, j'ajouterais une ligne après l'initialisation de reinit_mois et une autre après celle de reinit_jour. Cela permettra de bien comprendre ce que je veux faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    reinit_mois=...
    reinit_mois=$(echo $reinit_mois | sed -e 's/^0//')
    [...]
    reinit_jour=...
    reinit_jour=$(echo $reinit_jour | sed -e 's/^0//')
    Après ça, ça devrait aller.

  16. #16
    Membre émérite Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Par défaut
    Je viens de relire les modifs que j'ai apportées et je les trouve légèrement lourdingues. Il y a plus simple, élégant et rapide: Pour obtenir le même résultat, on peut faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    reinit_mois=...
    reinit_mois=${reinit_mois#0*}
    [...]
    reinit_jour=...
    reinit_jour=${reinit_jour#0*}

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