Parsing della riga di comando in Linux con argbash

Mattepuffo's logo
Parsing della riga di comando in Linux con argbash

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!


Condividi

Commentami!