Bonjours
J'aimerais ecrire un script qui accepte des option est des argument au option
#! /bin/sh
opt_qualite=5
opt_recursive=0
opt_ecrase=0
opt_directory=0
OPTERR=0
# Analyse les argument de la ligne de commande
while getopts ":rRfFqQdD?:" opt ; do
case $opt in
r|R ) opt_recursive=1 ;;
f|F ) opt_ecrase=1; ;;
q|Q ) opt_qualite="valeur indiqué apres l'option -q" ;;
d|D ) opt_directory= "valeur indiqué apres l'option -d";;
? ) echo "option illégale -$OPTARG"
exit 1
esac
done
shift $(($OPTIND - 1))
#}
echo $opt_recursive
echo $opt_ecrase
echo $opt_directory
echo $opt_qualite
les argument de l'option -q ou -Q sont une valeur qui est soit 5, 10 ou 15
l'argument de l'option -d ou -D est le chemin vers un repetoire dans lequel nous pouvons ecrire.
J'ai trouvé une astuce avec shift, mais elle ne me conviens pas car
elle n'est pas asser souple. Car avec cette astuce les option devienent obligatoire et dans un ordre precis ce qui ne m'interesse pas.
Si vous avez un solution a mon prb n'hesitez pas a eclairer mes lanterne.
Sebastien
# Tu y étais presque
Posté par Barnabé . Évalué à 3.
Pour ces options, $OPTARG vaut l'argument.
#! /bin/bash
opt_qualite=5
opt_recursive=0
opt_ecrase=0
opt_directory="/"
OPTERR=0
# Analyse les argument de la ligne de commande
while getopts "rRfFq:Q:d:D:?" opt ; do
case $opt in
r|R ) opt_recursive=1 ;;
f|F ) opt_ecrase=1 ;;
q|Q ) opt_qualite=$OPTARG ;;
d|D ) opt_directory=$OPTARG;;
* ) echo "option illégale $OPTIND"
exit 1
esac
done
echo $opt_recursive
echo $opt_ecrase
echo $opt_directory
echo $opt_qualite
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.