#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