mooc/filesystem/home/carole/A45/ploumploum.sh

60 lines
1.8 KiB
Bash
Raw Normal View History

2023-01-31 08:45:52 +04:00
#!/bin/bash
# fichier : ploumploum.sh
# Auteur : moi-meme
#=============== Declaration des fonctions
# alea N
alea() {
return $((($RANDOM % $1)+1))
}
# selecteur P arg1 arg2 ... argN
# affiche l'argument de position P (1 a N)
selecteur(){
local rang=$1 # numéro de la position de l'argument a selectionner
shift # supprime le premier argument de la liste des arguments
shift $(($rang - 1)) # supprime les P-1 premiers arguments de la liste
echo "$1"
}
selecteurboucle(){
local rang=$1 # numéro de la position de l'argument a selectionner
local iter=1 # sera le numero d'iteration dans la boucle
# et donne ainsi le rang courant dans la liste des arguments
shift # supprime le premier argument de la liste des arguments
for item in "$@" ; do # iteration sur la liste des arguments
if [ $iter -eq $rang ]
then # on a atteint le rang recherche ?
echo "$item"
return # Arret de la fonction
fi
iter=$(($iter + 1)) #Mise a jour du nombre d iterations
done
}
selecteurredir(){
local rang=$1 # numéro de la position de l'argument a selectionner
shift # supprime le premier argument de la liste des arguments
echo "${!rang}"
}
#=============== Corps du script
# le nombre d'arguments donnes est $#
if [ $# -eq 0 ] ; then
echo "ERREUR: la liste de choix est vide" >&2
exit 1
fi
# $# ne doit pas depasser 12
if [ $# -gt 12 ] ; then
echo "ERREUR: la liste de choix contient plus de 12 elements" >&2
exit 1
fi
# on veut un nombre aleatoire entre 1 et $#
alea $#
# le nombre aleatoire est rendu par $? (c'est le resultat de la derniere commande)
# selection et affichage de l'argument qui se trouve sur cette position
selecteur $? "$@"
# That's all folks