[Risolto]script bash con richieste

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Scrivi risposta
digt
Prode Principiante
Messaggi: 51
Iscrizione: domenica 14 gennaio 2018, 17:36
Desktop: budgie-desktop
Distribuzione: Ubuntu budgie 20.04 LTS x86_64

[Risolto]script bash con richieste

Messaggio da digt »

Ciao a tutti, vorrei creare uno script con una serie di opzioni che dovrà inserire l'utente ma, essendo completamente a digiuno di bash, chiedo aiuto a voi :)
faccio un esempio:
voglio scaricare un file con wget da qua https://download.osmand.net/list.php
quindi scriverò

Codice: Seleziona tutto

wget https://download.osmand.net/download?standard=yes&file=Italy_abruzzo_europe_2.obf.zip
vorrei uno script che mi chiedesse quale file scegliere, facendomi vedere una lista delle possibili scelte così:

Codice: Seleziona tutto

Digitare mappa da scaricare tra queste possibili scelte:
Italy_abruzzo_europe_2.obf.zip 	
Italy_basilicata_europe_2.obf.zip 	
Italy_calabria_europe_2.obf.zip 	
Italy_campania_europe_2.obf.zip 	
Italy_emilia-romagna_europe_2.obf.zip 	
Italy_friuli-venezia-giulia_europe_2.obf.zip 	
Italy_lazio_europe_2.obf.zip 	
Italy_liguria_europe_2.obf.zip 	
Italy_lombardia_europe_2.obf.zip 	
Italy_marche_europe_2.obf.zip 	
Italy_molise_europe_2.obf.zip 	
Italy_piemonte_europe_2.obf.zip 	
Italy_puglia_europe_2.obf.zip 	
Italy_sardegna_europe_2.obf.zip 	
Italy_sicilia_europe_2.obf.zip 	
Italy_toscana_europe_2.obf.zip 	
Italy_trentino-alto-adige_europe_2.obf.zip 	
Italy_umbria_europe_2.obf.zip 	
Italy_umbria_europe_2.obf.zip
Italy_valle-aosta_europe_2.obf.zip 	
Italy_veneto_europe_2.obf.zip
a questo punto dovrebbe partire il download del file scelto
Ultima modifica di digt il mercoledì 28 luglio 2021, 6:51, modificato 3 volte in totale.
Avatar utente
DoctorStrange
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2196
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 18.04 Bionic Beaver
Sesso: Maschile
Località: Roma, Italia

Re: script bash con richieste

Messaggio da DoctorStrange »

Non mi è molto chiaro cosa vorresti ottenere. Se, per esempio vorresti comporre un comando con diverse opzioni da processare simultaneamente, potresti usare la "getopts", in questo modo:

Codice: Seleziona tutto

while getopts ":a:b:" opzione; do
	case "${opzione}" in
		a)	
			a=${OPTARG}
			echo "Hai inserito come opzione a: " ${OPTARG}
			;;
		b)

			b=${OPTARG}
			echo "Hai inserito come opzione b: " ${OPTARG}
			;;
		*)
			echo "Scelta non valida"
			;;
	esac
done
In questo modo potresti, per esempio comporre una stringa del tipo:

Codice: Seleziona tutto

./ProvaGetopts -a valoreA -b valoreB
e processare dunque i due valori "valoreA" e "valoreB".

Se invece ti interessasse solamente, proporre all'utente un box di dialogo per chiedrgli un a scelta di qualche tipo, potresti usare, per esempio:

Codice: Seleziona tutto

dialog --title "Titolo" --backtitle "Titolo di sfondo" --yesno "Seleziona si oppure no" 5 30
Per quest'ultimo dovrai prima installare "dialog" con

Codice: Seleziona tutto

sudo apt install dialog
E ti fornisce un'interfaccia grafica minimale in bash.

Usando dialog, con l'opzione "--checklist" invece che "--yesno" potrai inserire la lista di tutte le scelte disponibili, e queste compariranno con una serie di radiobutton. Potrai poi usare un nuovo dialog con l'opzione "--gauge" per mostrare, sempre in modalità semi-grafica, una barra di avanzamento.
Allegati
checklist.png
gauge.png
digt
Prode Principiante
Messaggi: 51
Iscrizione: domenica 14 gennaio 2018, 17:36
Desktop: budgie-desktop
Distribuzione: Ubuntu budgie 20.04 LTS x86_64

Re: script bash con richieste

Messaggio da digt »

Ciao, intanto grazie della risposta; effettivamente non sono stato per niente chiaro :)
io vorrei che l'utente inserisse, dopo una richiesta, una variabile (che può essere il nome di un file o una percorso di salvataggio) e che questa variabile venga utilizzata nello script

nell'esempio fatto prima l'utente dovrebbe, dopo richiesta, digitare "Italy_abruzzo_europe_2.obf.zip" e quindi lo script dovrebbe procedere a scaricare quel file

Codice: Seleziona tutto

wget https://download.osmand.net/download?standard=yes&file=Italy_abruzzo_europe_2.obf.zip
se invece l'utente avesse digitato "Italy_basilicata_europe_2.obf.zip" in automatico il comando diventerebbe

Codice: Seleziona tutto

wget https://download.osmand.net/download?standard=yes&file=taly_basilicata_europe_2.obf.zip
quindi ricapitolando:
-avvio lo script
-mi viene mostrato un elenco di variabili
-inserisco la variabile desiderata
-lo script procede utilizzando la variabile inserita

spero di essere stato un pò più comprensibile :)
digt
Prode Principiante
Messaggi: 51
Iscrizione: domenica 14 gennaio 2018, 17:36
Desktop: budgie-desktop
Distribuzione: Ubuntu budgie 20.04 LTS x86_64

Re: script bash con richieste

Messaggio da digt »

allora...forse ho capito come utilizzare i comandi echo e read..però adesso che ho scoperto l'esistenza di dialog vorrei provare ad utilizzarlo per rendere più semplice la scelta.
Adesso me lo studio :)
Avatar utente
vaeVictis
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4404
Iscrizione: venerdì 27 luglio 2012, 17:58
Desktop: Gnome
Distribuzione: Ubuntu 18.04.4 64bit

Re: script bash con richieste

Messaggio da vaeVictis »

digt ha scritto:
venerdì 23 luglio 2021, 20:53
allora...forse ho capito come utilizzare i comandi echo e read..però adesso che ho scoperto l'esistenza di dialog vorrei provare ad utilizzarlo per rendere più semplice la scelta.
Adesso me lo studio :)
Ti suggerisco di procedere per gradi. Prima fai lo script iniziale. Poi lo riscrivi per dialog. Non saltare la parte base, altrimenti avrai delle lacune che dovrai colmare dopo e risulta tutto più difficile.
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once, but I fear the man who has practiced one kick 10000 times.»
digt
Prode Principiante
Messaggi: 51
Iscrizione: domenica 14 gennaio 2018, 17:36
Desktop: budgie-desktop
Distribuzione: Ubuntu budgie 20.04 LTS x86_64

Re: script bash con richieste

Messaggio da digt »

vaeVictis ha scritto:
domenica 25 luglio 2021, 0:17


Ti suggerisco di procedere per gradi. Prima fai lo script iniziale. Poi lo riscrivi per dialog. Non saltare la parte base, altrimenti avrai delle lacune che dovrai colmare dopo e risulta tutto più difficile.
Grazie del suggerimento.
Effettivamente dialog lo trovo ancora un pò ostico; tra le altre cose mi sembra di aver capito che l'input verrebbe salvato in un file esterno, complicando ulteriormente le cose.
Per ora credo di potermi accontentare dei comandi base. Prendendo l'esempio fatto sopra lo script sarebbe così

Codice: Seleziona tutto

#! /bin/sh

# Scelta mappa
echo "Digita la regione
abruzzo	
basilicata	
calabria
campania
emilia-romagna
friuli-venezia-giulia
lazio
liguria
lombardia
marche
molise
piemonte
puglia
sardegna
sicilia
toscana
trentino-alto-adige
umbria
valle-aosta
veneto

						"
read regione
wget -O "${HOME}/Scaricati/$regione.zip" "https://download.osmand.net/download?standard=yes&file=Italy_"$regione"_europe_2.obf.zip"
nicNiz
Prode Principiante
Messaggi: 10
Iscrizione: domenica 4 ottobre 2020, 20:31

Re: script bash con richieste

Messaggio da nicNiz »

Si ubuntu non c'è zenity preinstallato?
Avatar utente
DoctorStrange
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2196
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 18.04 Bionic Beaver
Sesso: Maschile
Località: Roma, Italia

Re: script bash con richieste

Messaggio da DoctorStrange »

nicNiz ha scritto:
domenica 25 luglio 2021, 22:11
Si ubuntu non c'è zenity preinstallato?
Preinstalato non mi sembra, ma credo che sia parte dei repository ufficiali, quindi lo puoi installare senza troppi problemi.
digt
Prode Principiante
Messaggi: 51
Iscrizione: domenica 14 gennaio 2018, 17:36
Desktop: budgie-desktop
Distribuzione: Ubuntu budgie 20.04 LTS x86_64

Re: script bash con richieste

Messaggio da digt »

nicNiz ha scritto:
domenica 25 luglio 2021, 22:11
Si ubuntu non c'è zenity preinstallato?
DoctorStrange ha scritto:
lunedì 26 luglio 2021, 8:37
nicNiz ha scritto:
domenica 25 luglio 2021, 22:11
Si ubuntu non c'è zenity preinstallato?
Preinstalato non mi sembra, ma credo che sia parte dei repository ufficiali, quindi lo puoi installare senza troppi problemi.
Sembra interessante...gli darò un'occhiata, grazie
digt
Prode Principiante
Messaggi: 51
Iscrizione: domenica 14 gennaio 2018, 17:36
Desktop: budgie-desktop
Distribuzione: Ubuntu budgie 20.04 LTS x86_64

Re: script bash con richieste

Messaggio da digt »

Che dire...questo zenity mi piace proprio :)

scopiazzando qua e là ho creato questo script di esempio che chiede di selezionare da un elenco a discesa (scoperto in modo casuale) e mostra l'avanzamento del download.
credo che da questa base possa fare qualcosa di bellino :birra:

Codice: Seleziona tutto

#! /bin/sh

# Scelta mappa
Regione=$(zenity --entry --title="Scarica Mappa" --text="seleziona la Regione che vuoi scaricare" abruzzo basilicata calabria campania emilia-romagna friuli-venezia-giulia lazio liguria lombardia marche molise piemonte puglia sardegna sicilia toscana trentino-alto-adige umbria valle-aosta veneto)
# Download mappa
wget -O "${HOME}/Scaricati/$Regione.zip" "https://download.osmand.net/download?standard=yes&file=Italy_"$Regione"_europe_2.obf.zip" 2>&1 | sed -un 's/.*\ \([0-9]\+%\)\ \+\([0-9.,]\+.\)\ [0-9]\+s$/\1\n# Velocità di download \2B\/s/p' | zenity --progress --percentage=0 --auto-close --auto-kill
#Fine
zenity --info --text="Operazione completata"	
Avatar utente
trekfan1
Moderatore Globale
Moderatore Globale
Messaggi: 22423
Iscrizione: domenica 21 maggio 2006, 10:51
Desktop: Gnome
Distribuzione: Ubuntu 21.04 e 21.10 (dev) 64 bit
Sesso: Maschile
Località: Formigine (MO) | Accecante Asceta

Re: [RISOLTO]script bash con richieste

Messaggio da trekfan1 »

IL [Risolto] va messo evitando di scriverlo tutto maiuscolo, correggi, grazie :)
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 3 ospiti