Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 04/01/2014, à 19:48

Pam547

[résolu]Bash appel de fonction dans une fonction

Bonjour

La fonction est appelée lors du premier passage de la boucle mais pas lors des passages suivants ?

Vous avez une piste ?

#! /bin/bash

horraire(){
while [[ $heure -lt 1 ||  $heure -gt 4 ]]   # s'assurer d'une réponse pertinente
do 
echo -en "\nQuel horraire ? \n 1=8h00 10h30    2=9h30 12h00    3=14h00 16h30    4=17h30 19h00  "
read heure
if [[ $heure -eq 1 ]]
then 
heure1[$1$2]=8h00
heure2[$1$2]=10h30
elif [[ $heure -eq 2 ]]
then 
heure1[$1$2]=9h30
heure2[$1$2]=12h00
elif [[ $heure -eq 3 ]]
then 
heure1[$1$2]=14h00
heure2[$1$2]=16h30
elif [[ $heure -eq 4 ]]
then 
heure1[$1$2]=17h30
heure2[$1$2]=19h00
else
echo -e "\n\nIl faut un nombre entre 1 et 4 "
fi
done
}


jour(){
for j in 1 2 3
do
list1=$(seq 8)
for i in $list1
do
ddate[$j$i]=-1
while [[ ${ddate[$j$i]} -lt 0 || ${ddate[$j$i]} -gt 31 || ! ${ddate[$j$i]} =~ ^[0-9]*$ ]]
do
if [[ "$i" -eq 1 ]]
	then
	echo -en "\nQuel est le $i er jour de permanence du mois de ${mois[$j]} " # choix du jour
	read ddate[$j$i]
	horraire $j $i
if [[ ${ddate[$j$i]} -lt 0 || ${ddate[$j$i]} -gt 31 || ! ${ddate[$j$i]} =~ ^[0-9]*$ ]]
then
echo -e "\n\nIl faut un nombre entre 1 et 31 "
fi
elif [[ "$i" -gt 1 ]]
	then
	echo -en "Quel est le $i ème jour de permanence du mois de ${mois[$j]} (Entrer pour finir) " # choix du jour
	read ddate[$j$i]
	horraire $j $i               #### !??????????! La fonction n'est pas appelée !??????????????!
if [[ -z "${ddate[$j$i]}" ]]
then
dcompt[$j]=$(echo ${#ddate[@]})     # variable pour connaître le nombre de ligne à ajouter
let "dcompt[$j]=dcompt[$j]-1"
break 2
elif [[ ${ddate[$j$i]} -lt 0 || ${ddate[$j$i]} -gt 31 || ! ${ddate[$j$i]} =~ ^[0-9]*$ ]]
then
echo -e "\n\nIl faut un nombre entre 1 et 31 "
fi
fi
done
done
done
}


jour

Merci

Dernière modification par Pam547 (Le 04/01/2014, à 21:14)


Art.9.(code civil)  Chacun a droit au respect de sa vie privée.

Art.12.(déclaration universelle des DDH) Nul ne sera l'objet d'immixtions arbitraires dans sa vie privée, sa famille, son domicile ou sa correspondance, ni d'atteintes à son honneur et à sa réputation. Toute personne a droit à la protection de la loi contre de telles immixtions ou de telles atteintes.

Hors ligne

#2 Le 04/01/2014, à 20:37

pingouinux

Re : [résolu]Bash appel de fonction dans une fonction

Bonjour,
Si tu appelles la fonction horraire une deuxième fois, la variable heure garde sa valeur du coup d'avant, et tu sors immédiatement de la boucle while.
Remarque : horraire s'écrit normalement horaire, mais tu peux évidemment choisir les noms de variable à ta guise.

Hors ligne

#3 Le 04/01/2014, à 21:14

Pam547

Re : [résolu]Bash appel de fonction dans une fonction

horaire(){
heure=-1
while [[ $heure -lt 1 ||  $heure -gt 4 ]]   # s'assurer d'une réponse pertinente
do 
echo -en "\nQuel horaire ? \n 1=8h00 10h30    2=9h30 12h00    3=14h00 16h30    4=17h30 19h00  "
read heure
if [[ $heure -eq 1 ]]
then 
heure1[$1$2]=8h00
heure2[$1$2]=10h30
elif [[ $heure -eq 2 ]]
then 
heure1[$1$2]=9h30
heure2[$1$2]=12h00
elif [[ $heure -eq 3 ]]
then 
heure1[$1$2]=14h00
heure2[$1$2]=16h30
elif [[ $heure -eq 4 ]]
then 
heure1[$1$2]=17h30
heure2[$1$2]=19h00
else
echo -e "\n\nIl faut un nombre entre 1 et 4 "
fi
done
}

Génial
Faut que je mette dans le crane la vérification des déclarations des variables.

Merci encore pingouinux


Art.9.(code civil)  Chacun a droit au respect de sa vie privée.

Art.12.(déclaration universelle des DDH) Nul ne sera l'objet d'immixtions arbitraires dans sa vie privée, sa famille, son domicile ou sa correspondance, ni d'atteintes à son honneur et à sa réputation. Toute personne a droit à la protection de la loi contre de telles immixtions ou de telles atteintes.

Hors ligne

#4 Le 04/01/2014, à 21:40

pingouinux

Re : [résolu]Bash appel de fonction dans une fonction

Remarques :
1) Tu appelles la fonction horaire, mais cette dernière ne renvoie pas de résultat, et tu n'utilises pas les variables que tu y définis.
2) Tu devrais indenter ton programme, il serait beaucoup plus lisible

Hors ligne