Per molti scopi, le funzioni GNU getopt()
e getopt_long()
sono buone scelte.
GNU getopt()
è per argomenti di opzioni a singola lettera e si avvicina abbastanza al comportamento standard POSIX e può essere persuaso a comportarsi in modo più ortodosso impostando la variabile di ambiente POSIXLY_CORRECT. La differenza è che GNU getopt()
riconosce gli argomenti delle opzioni dopo il primo argomento non-option e permuta gli argomenti in modo che tutti gli argomenti dell'opzione vengano elaborati prima di qualsiasi argomento non-option. Questo a volte conta, anche se i contesti tendono ad essere un po 'esoterici. Ci sono alcuni altri trucchi extra disponibili.
GNU getopt_long()
è il miglior meccanismo per gestire opzioni lunghe come --help
. È in grado di gestire argomenti opzionali, abbinando opzioni a lettera singola e ogni sorta di cose.
Sono disponibili numerosi altri pacchetti che gestiscono le opzioni in vari modi.
(Perl ha una pletora di moduli getopt, che riflette quanto impegno è stato messo in nel corso degli anni.)
Potreste trovare alcune utili informazioni in più a What is the general syntax of a Unix shell command. È inoltre possibile leggere le specifiche POSIX per le convenzioni della riga di comando nel capitolo Utility Conventions.
fonte
2009-03-12 04:49:16
Esegui il mio voto per "tira il tuo". a) Si impara da esso, b) è divertente, e c) non dovrai preoccuparti della portabilità o del codice di qualcun altro, e d) sai che avrai tutte le funzionalità che desideri e nessuna delle quelli che non conosci Tuttavia, penso che sarò in minoranza. –
@Chris Lutz: a meno che tu non faccia il tuo, quindi aderisca molto strettamente allo standard, allora rischi di produrre programmi che sono irritanti da usare. L'utilizzo di un parser di opzioni standard riduce l'apprendimento per tutti gli altri (che utilizzano il tuo programma) e, di solito, semplifica anche la manutenzione. –
Recentemente ho lanciato https://github.com/visionmedia/commander.ca port-ish del mio parsy e del parser dell'opzione node –