2017-07-21 4 views
0

J'utilise getopts pour transmettre des paramètres à un script shell. Par exemple, je souhaite effectuer des opérations sur deux sections du script, toutes deux commençant par la même lettre. Je ne veux pas non plus choisir une autre lettre. Par exemple j'ai deux projets: le projet 1 et le projet 2 et tous les deux commencent par la lettre p.Options getopts avec le même alphabet de départ

Y at-il un moyen, que je peux fournir des chaînes complètes telles que --project1 etc. Ou y at-il une autre solution?

while getopts "project1 project2" opt; 
# This ofcourse would not work. So, whats the solution? 

Y a-t-il une alternative à getopts?

+0

double possible de [Utilisation getopts dans le script shell bash pour obtenir les options de ligne de commande longues et courtes] (https://stackoverflow.com/questions/402377/using- getopts-in-bash-shell-script-to-get-long-et-short-command-line-options) – yinnonsanders

Répondre

0

Vous pouvez utiliser un argument d'options. Il devrait ressembler à

while getopts p: flag 
do 
    case $flag in 
     p) OARG=$OPTARG;; 
    esac 
done 

echo $OARG 

getopts stocke l'option passée dans dans OPTARG.

Vous invoquer le script en utilisant

./script.sh -p "project1" 
+0

project1 et project2 ne s'excluent pas mutuellement. parfois, il peut être nécessaire de les exécuter tous les deux en même temps. Peut-être que mon exemple project1 et project2 n'était pas correct. – infoclogged

+0

Dans ce cas, vous voudrez probablement utiliser 'getopt' (non s) – yinnonsanders