Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Linux > Applications > Shell

Shell Vos questions sur l'utilisation des commandes shell

Réponse
 
Outils de la discussion
Vieux 21/08/2008, 13h57   #1 (permalink)
Invité de passage
 
Date d'inscription: août 2008
Messages: 9
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.
koutbino est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 21/08/2008, 14h19   #2 (permalink)
Membre émérite
 
Date d'inscription: septembre 2002
Localisation: Bruxelles
Âge: 30
Messages: 955
Par défaut

Salut,

Commence déjà par montrer le code de ton script.
Mygale1978 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 21/08/2008, 14h23   #3 (permalink)
Invité de passage
 
Date d'inscription: août 2008
Messages: 9
Par défaut

en mp
koutbino est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 21/08/2008, 14h28   #4 (permalink)
Membre émérite
 
Date d'inscription: septembre 2002
Localisation: Bruxelles
Âge: 30
Messages: 955
Par défaut

Non pas en mp.

Ce n'est pas un secret d'état
Mygale1978 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 21/08/2008, 14h32   #5 (permalink)
Invité de passage
 
Date d'inscription: août 2008
Messages: 9
Par défaut

c'est le script de l'ets la ou je travail
koutbino est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 21/08/2008, 14h47   #6 (permalink)
Invité de passage
 
Date d'inscription: août 2008
Messages: 9
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.
koutbino est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 21/08/2008, 15h04   #7 (permalink)
Membre émérite
 
Date d'inscription: septembre 2002
Localisation: Bruxelles
Âge: 30
Messages: 955
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 :
echo $((10#09+7))
16
Mygale1978 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 21/08/2008, 15h18   #8 (permalink)
Invité de passage
 
Date d'inscription: août 2008
Messages: 9
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.
koutbino est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 21/08/2008, 15h35   #9 (permalink)
Membre émérite
 
Date d'inscription: septembre 2002
Localisation: Bruxelles
Âge: 30
Messages: 955
Par défaut

Mets les lignes de codes qui posent problème ici !
Mygale1978 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 21/08/2008, 15h52   #10 (permalink)
Invité de passage
 
Date d'inscription: août 2008
Messages: 9
Par défaut

Code :
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

Dernière modification par gangsoleil ; 22/08/2008 à 17h27
koutbino est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 21/08/2008, 15h57   #11 (permalink)
Membre émérite
 
Date d'inscription: septembre 2002
Localisation: Bruxelles
Âge: 30
Messages: 955
Par défaut

et le code de cette fonction?

Code :
easidb_verif_date_db "$rep"
Mygale1978 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 21/08/2008, 16h06   #12 (permalink)
Invité de passage
 
Date d'inscription: août 2008
Messages: 9
Par défaut

Code :
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
}

Dernière modification par gangsoleil ; 22/08/2008 à 17h28
koutbino est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 21/08/2008, 16h44   #13 (permalink)
Membre émérite
 
Date d'inscription: septembre 2002
Localisation: Bruxelles
Âge: 30
Messages: 955
Par défaut

Code :
let "annee1=10#$annee1+1"
Il faut voir si c'est le 08 du mois ou le 08 de l'année (2008)
Mygale1978 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 21/08/2008, 17h07   #14 (permalink)
Invité de passage
 
Date d'inscription: août 2008
Messages: 9
Par défaut

Merci pour tt les reponse deja mais tjr même probleme
koutbino est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 23/08/2008, 22h14   #15 (permalink)
Membre Confirmé
 
Date d'inscription: septembre 2007
Localisation: Genève
Âge: 45
Messages: 219
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 :
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.
jmelyn est déconnecté   Envoyer un message privé Réponse avec citation
Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Linux > Applications > Shell



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide