GNU/Linux >> Tutoriels Linux >  >> Linux

Getopt, Getopts ou analyse manuelle - Que dois-je utiliser lorsque je veux prendre en charge les options courtes et longues ?

Actuellement, j'écris un script Bash qui a les exigences suivantes :

  • il doit fonctionner sur une grande variété de plates-formes Unix/Linux
  • il doit prendre en charge les options courtes et longues (GNU)

Je sais que getopts serait le moyen préféré en termes de portabilité, mais autant que je sache, il ne prend pas en charge les options longues.

getopt prend en charge les options longues mais le BashGuide le déconseille fortement :

N'utilisez jamais getopt(1). getopt ne peut pas gérer les chaînes d'arguments vides ou
les arguments avec des espaces blancs intégrés. S'il vous plaît, oubliez qu'il a toujours
existé.

Donc, il y a toujours l'option d'analyse manuelle. Ceci est sujet aux erreurs, produit pas mal de code passe-partout, et j'ai besoin de gérer les erreurs par moi-même (je suppose que getopt(s) faire la gestion des erreurs par eux-mêmes).

Alors, quel serait le choix préféré dans ce cas ?

Réponse acceptée :

S'il doit être portable sur une gamme d'Unices, vous devrez vous en tenir à POSIX sh. Et AFAIU là, vous n'avez tout simplement pas d'autre choix que de rouler la gestion des arguments à la main.


Linux
  1. Qu'est-ce qu'une commande Chown sous Linux et comment l'utiliser

  2. Qu'est-ce qu'une commande cURL et comment l'utiliser ?

  3. Chroot "prison" - Qu'est-ce que c'est et comment l'utiliser ?

  4. Quand et pourquoi devrais-je utiliser Apt-get Update ?

  5. Quand dois-je utiliser TCP_NODELAY et quand TCP_CORK ?

Qu'est-ce que la prison chroot et comment l'utiliser ?

Comment utiliser les commandes et les options SFTP

Commande de fichier Linux :que fait-elle et comment l'utiliser

Commande Linux Tail :qu'est-ce que c'est et comment l'utiliser

Qu'est-ce que Terraform et comment l'installer et l'utiliser sur AWS EC2

Qu'est-ce qu'une machine virtuelle et pourquoi l'utiliser ?