Je sais que les scripts shell exécutent simplement des commandes comme si elles étaient exécutées à l'invite de commande. J'aimerais pouvoir exécuter des scripts shell comme s'il s'agissait de fonctions… C'est-à-dire prendre une valeur d'entrée ou une chaîne dans le script. Comment dois-je procéder ?
Réponse acceptée :
La commande shell et tous les arguments de cette commande apparaissent comme numérotés variables shell :$0
a la valeur de chaîne de la commande elle-même, quelque chose comme script
, ./script
, /home/user/bin/script
ou peu importe. Tous les arguments apparaissent sous la forme "$1"
, "$2"
, "$3"
etc. Le nombre d'arguments est dans la variable shell "$#"
.
Les moyens courants de gérer cela impliquent les commandes shell getopts
et shift
. getopts
ressemble beaucoup au C getopt()
fonction bibliothèque. shift
déplace la valeur de $2
à $1
, $3
à $2
, etc; $#
se décrémente. Le code finit par regarder la valeur de "$1"
, faire des choses en utilisant un case
…esac
pour décider d'une action, puis faire un shift
pour déplacer $1
à l'argument suivant. Il n'a qu'à examiner $1
, et peut-être $#
.