Problème avec getops et case

Doezer Messages postés 289 Statut Membre -  
 Utilisateur anonyme -
Bonjour,
Je bloque actuellement sur un script en bash que je réalise.
J'utilise getops pour vérifier chacune de mes options, mais une fois qu'il a fini de les vérifier, le script reste dans une boucle infinie causée par le while.
Le problème, c'est que la valeur de getops devrait passer de FALSE à TRUE mais ça n'arrive pas.

Voilà l'extrait de code :
while getopts "h:m:a:u:p:d:D:s" option;
do
	case $option in
		m)
			mois=$OPTARG
			;;
		a)
			annee=$OPTARG
			;;
		u)
			user=$OPTARG
			;;
		p)
			pass=$OPTARG
			;;
		d)
			dir=$OPTARG
			;;
		D)
			db=$OPTARG
			;;
		s)
			tempsql=$OPTARG
			;;
		h)
			.... message d'aide ...
			exit 1
			;;
		/?)
			echo "Incorrect syntax. Type logextract.bash -h for help."
			echo ""
			exit 1
			;;
	esac
done
shift $(($OPTIND-1))


Et à chaque exécution, rien n'est affiché donc.

1 réponse

Utilisateur anonyme
 
salut,

pourquoi veux-tu que le script affiche quelque chose: il n'y a rien de prévu pour qu'il affiche quelque chose !

à part en cas d'emploi d'une option non prévue, mais là c'est bash qui prend la main.

dans le case, le point d'interrogation est mal protégé, ça devrait être \?)

si je met un echo $mois à la fin, et que j'appelle le script ./script -m 12
il affiche effectivement 12.
0