Parsing della riga di comando in Linux con argbash
Quando creiamo i nostri script per la shell, è molto facile che dobbiamo raccogliere l'input dell'utente.
Se vogliamo usare una cosa più avanzata di quella standard della shell, possiamo usare argbash!
Per installarlo su Arch Linux:
$ yaourt -Sy argbash
A questo punto possiamo creare il nostro template con le opzioni da richiedere:
$ argbash-init --pos nome --opt-bool verbose template.sh
matte@matte-arch ~/Desktop$ cat template.sh
#!/bin/bash
# m4_ignore(
echo "This is just a script template, not the script (yet) - pass it to
'argbash' to fix this." >&2
exit 11 #)Created by argbash-init v2.5.0
# ARG_OPTIONAL_BOOLEAN([verbose], , [<verbose's help message goes here>])
# ARG_POSITIONAL_SINGLE([nome], [<nome's help message goes here>], )
# ARG_HELP([])
# ARGBASH_GO
# [ <-- needed because of Argbash
echo "verbose is $_arg_verbose"
echo "Value of nome: $_arg_nome"
# ] <-- needed because of Argbash
Qui ho creato due opzioni, una per il nome (obbligatoria) e una per la modalità verbosa.
Adesso creiamo il nostro script partendo dal template:
$ argbash template.sh -o script.sh
Non vi posto il contenuto di script.sh perchè è lungo.
Per testarlo:
$ ./script.sh
Usage: ./script.sh [--(no-)verbose] [-h|--help]
: <nome's help message goes here>
--verbose,--no-verbose: <verbose's help message goes here> (off by default)
-h,--help: Prints help
FATAL ERROR: Not enough positional arguments - we
require exactly 1 (namely: 'nome'), but got only 0.
$ ./script.sh "Mattepuffo"
verbose is off
Value of nome: Mattepuffo
Ovviamente dovete modificare lo script per le operazioni che vi servono.
Enjoy!
linux shell bash argbash
Commentami!