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 $# .