[Risolto] Comando case minore o maggiore di

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Scrivi risposta
Avatar utente
Pehua
Prode Principiante
Messaggi: 241
Iscrizione: martedì 19 aprile 2022, 9:02
Desktop: Ubuntu
Distribuzione: Ubuntu 22.04.4 LTS
Sesso: Maschile

[Risolto] Comando case minore o maggiore di

Messaggio da Pehua »

Sera, una domanda su case che non trovo in rete:

È possibile e se si come, avere dei parametri di maggiore o minore nel comando case?

Faccio un esempio:

Codice: Seleziona tutto

echo "Quanti anni hai?"

read ANNI

case $ANNI in

	minore di 18) echo "non puoi entrare";;
	
		18 o più) echo "Prego, entra pure!!";;
		
			esac
Come faccio usando case ad indicargli i parametri, minore di 18 e 18 o superiore?

Si può?
Ultima modifica di Pehua il martedì 7 febbraio 2023, 22:21, modificato 1 volta in totale.
Al di la delle impostazioni culturali :birra:
Avatar utente
GjMan78
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2697
Iscrizione: mercoledì 22 novembre 2006, 19:15
Desktop: Gnome + I3WM
Distribuzione: Manjaro
Sesso: Maschile
Località: ~/Italia/Lazio/Viterbo/

Re: Comando case minore o maggiore di

Messaggio da GjMan78 »

HP Pavilion 15 - AMD A6-5200 - 8 Gbyte Ram DDR3 - SSD Samsung 500 Gbyte Manjaro Gnome+I3 WM
Asus EEEpc - Intel Atom N450 - 2 Gbyte Ram DDR2 - HDD 160 Gbyte - antiX 64bit IceWM
Samsung NP-N130 - Intel Atom N270 - 2 Gbyte Ram DDR2 - HDD 160 Gbyte - antiX 32 bit IceWM
Avatar utente
Pehua
Prode Principiante
Messaggi: 241
Iscrizione: martedì 19 aprile 2022, 9:02
Desktop: Ubuntu
Distribuzione: Ubuntu 22.04.4 LTS
Sesso: Maschile

Re: Comando case minore o maggiore di

Messaggio da Pehua »

GjMan78 ha scritto:
martedì 7 febbraio 2023, 20:17
https://unix.stackexchange.com/question ... ase-syntax

Buona lettura!
Ciao!!!

Ancora grazie, aivoglia a cerca in italiano, mi è apparso case in 20 linguaggi informatici hhehehe

Alla fine ho compreso la logica di una soluzione che funziona e l' ho adattata al caso dell' esempio:

Codice: Seleziona tutto

echo "Quanti anni hai?"

read ANNI

case $ANNI in

	[0-9]|[1-1][0-6]|17) echo "non puoi entrare";;
	
		*) echo "Prego, entra pure!!";;
		
			esac
			
Purtroppo come temevo non esiste in case una comparazione di numeri perchè a quanto ho capito legge solo stringhe, ma comunque con quiesto sistema funziona anche se un po rompicapo all' inizio.

Devi dirgli da [0 a 9], [solo 1 come prima cifra del secondo numero], [6 come massima cifra della seconda cifra del secondo numero] e in fine 17, tutti separati da | :cry:

In effetti avevo trovato una soluzione online: 1 | 2 | 3 | etc... fino a 17, questo lo scorcia...

Grazie, ho risolto :birra:

PS: Ma è attiva pochissima gente (che da supporto) o sbaglio?

EDIT:
Mi sono accorto solo ora che cambiandolo cosi: [0-9]|[1-1][0-7]
ha più senso... Da 0 a 9 e da 10 a 17 :sisi:
Al di la delle impostazioni culturali :birra:
Avatar utente
GjMan78
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2697
Iscrizione: mercoledì 22 novembre 2006, 19:15
Desktop: Gnome + I3WM
Distribuzione: Manjaro
Sesso: Maschile
Località: ~/Italia/Lazio/Viterbo/

Re: Comando case minore o maggiore di

Messaggio da GjMan78 »

Nel caso in questione più che CASE io avrei usato IF.

:birra:
HP Pavilion 15 - AMD A6-5200 - 8 Gbyte Ram DDR3 - SSD Samsung 500 Gbyte Manjaro Gnome+I3 WM
Asus EEEpc - Intel Atom N450 - 2 Gbyte Ram DDR2 - HDD 160 Gbyte - antiX 64bit IceWM
Samsung NP-N130 - Intel Atom N270 - 2 Gbyte Ram DDR2 - HDD 160 Gbyte - antiX 32 bit IceWM
Avatar utente
Pehua
Prode Principiante
Messaggi: 241
Iscrizione: martedì 19 aprile 2022, 9:02
Desktop: Ubuntu
Distribuzione: Ubuntu 22.04.4 LTS
Sesso: Maschile

Re: Comando case minore o maggiore di

Messaggio da Pehua »

GjMan78 ha scritto:
martedì 7 febbraio 2023, 21:44
Nel caso in questione più che CASE io avrei usato IF.

:birra:
Si è vero ma ero curioso se case avesse la possibilità di farlo e nel caso come, ora lo so :)
Al di la delle impostazioni culturali :birra:
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4390
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: [Risolto] Comando case minore o maggiore di

Messaggio da UbuNuovo »

Io non uso quasi mai lo switch case, comunque, perché scrivere [1-1]? Scrivi 1 e basta: [0-9]|1[0-7]

Se fai una regex per filtrare numeri, ricordati di impostare anche i limiti, per esempio:

Codice: Seleziona tutto

for i in {1..120};do echo "$i" | grep -Eo '^[0-9]$|^1[0-7]?$';done
Altrimenti, ho ritrovato trai miei appunti questa sintassi:

Codice: Seleziona tutto

#!/bin/bash
echo "Quanti anni hai?"
read anni
case $anni in
    ($((anni < 18))*) echo "non puoi entrare";;
                   *) echo "Prego, entra pure!!";;
esac
Salva l'Ucraina! 🇺🇦
Avatar utente
Pehua
Prode Principiante
Messaggi: 241
Iscrizione: martedì 19 aprile 2022, 9:02
Desktop: Ubuntu
Distribuzione: Ubuntu 22.04.4 LTS
Sesso: Maschile

Re: [Risolto] Comando case minore o maggiore di

Messaggio da Pehua »

UbuNuovo ha scritto:
mercoledì 8 febbraio 2023, 17:56
Io non uso quasi mai lo switch case, comunque, perché scrivere [1-1]? Scrivi 1 e basta: [0-9]|1[0-7]

Se fai una regex per filtrare numeri, ricordati di impostare anche i limiti, per esempio:

Codice: Seleziona tutto

for i in {1..120};do echo "$i" | grep -Eo '^[0-9]$|^1[0-7]?$';done
Altrimenti, ho ritrovato trai miei appunti questa sintassi:

Codice: Seleziona tutto

#!/bin/bash
echo "Quanti anni hai?"
read anni
case $anni in
    ($((anni < 18))*) echo "non puoi entrare";;
                   *) echo "Prego, entra pure!!";;
esac
Ciauu!!

Grazie mille Ubu!!

Pe la regex non so cosa sia, ma grazie comunque, provero' anche la tua sintassi, per l' 1, ho solo cercato di raccapezzarmi dal link postatomi e che comunque mi ha fatto risolvere, semplifichero anche quello. :birra:

PS: STasera 21,30 Canale 9 :lol:
Al di la delle impostazioni culturali :birra:
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4390
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: [Risolto] Comando case minore o maggiore di

Messaggio da UbuNuovo »

O.T.
Sì! Frankenstein junior. :asd:
Ciaux
Salva l'Ucraina! 🇺🇦
Avatar utente
Pehua
Prode Principiante
Messaggi: 241
Iscrizione: martedì 19 aprile 2022, 9:02
Desktop: Ubuntu
Distribuzione: Ubuntu 22.04.4 LTS
Sesso: Maschile

Re: [Risolto] Comando case minore o maggiore di

Messaggio da Pehua »

UbuNuovo ha scritto:
mercoledì 8 febbraio 2023, 17:56
Io non uso quasi mai lo switch case, comunque, perché scrivere [1-1]? Scrivi 1 e basta: [0-9]|1[0-7]

Se fai una regex per filtrare numeri, ricordati di impostare anche i limiti, per esempio:

Codice: Seleziona tutto

for i in {1..120};do echo "$i" | grep -Eo '^[0-9]$|^1[0-7]?$';done
Altrimenti, ho ritrovato trai miei appunti questa sintassi:

Codice: Seleziona tutto

#!/bin/bash
echo "Quanti anni hai?"
read anni
case $anni in
    ($((anni < 18))*) echo "non puoi entrare";;
                   *) echo "Prego, entra pure!!";;
esac
Ari-Ciao, questo: [0-9]|1[0-7], funziona.

La sintassi dai tuoi appunti non funziona piu' pero'...

Mi da sempre che non posso entrare anche se digito 19 up... :nono:

Manca qualcosa o non funziona piu' tale sintassi?
Al di la delle impostazioni culturali :birra:
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4390
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: [Risolto] Comando case minore o maggiore di

Messaggio da UbuNuovo »

Hai scritto tutto bene? Fai il copia incolla.
A me funge regolarmente:

Codice: Seleziona tutto

8-) ./case_minore_di_mio.sh
Quanti anni hai?
19
Prego, entra pure!!
8-) ./case_minore_di_mio.sh
Quanti anni hai?
17
non puoi entrare
8-) 
Salva l'Ucraina! 🇺🇦
Avatar utente
wilecoyote
Gruppo Documentazione
Gruppo Documentazione
Messaggi: 14390
Iscrizione: giovedì 20 agosto 2009, 16:21
Desktop: Kubuntu Lubuntu
Distribuzione: 9.04 32bit 14/18/20/22.04 LTS 64bit
Sesso: Maschile
Località: Ceranesi - Ge

Re: [Risolto] Comando case minore o maggiore di

Messaggio da wilecoyote »

) Salve, carino lo script @UbuNuovo, peccato che non accetti i decimali:

Codice: Seleziona tutto

wilecoyote@CactusField:~$ ./case_minore_di_mio.sh
Quanti anni hai?
16
Spiacente, non puoi entrare…
wilecoyote@CactusField:~$ ./case_minore_di_mio.sh
Quanti anni hai?
19
Prego, entra pure!!
wilecoyote@CactusField:~$ ./case_minore_di_mio.sh
Quanti anni hai?
19,1
Spiacente, non puoi entrare…
Ho integrato il messaggio di risposta negativa.

:: Ciao
ACER Extensa 5230E 2,2 Ghz cpu Celeron 900 hdd 160 GB Ram 1 GB scheda video Intel GM500
ACER Extensa 5635Z 2,2 Ghz cpu Celeron T3100 hdd 320 GB Ram 4 GB scheda video Intel Mobile 4
Quando una Finestra chiusa incontra un Pinguino la Finestra chiusa è una Finestra aperta.
Avatar utente
Pehua
Prode Principiante
Messaggi: 241
Iscrizione: martedì 19 aprile 2022, 9:02
Desktop: Ubuntu
Distribuzione: Ubuntu 22.04.4 LTS
Sesso: Maschile

Re: [Risolto] Comando case minore o maggiore di

Messaggio da Pehua »

UbuNuovo ha scritto:
mercoledì 8 febbraio 2023, 21:08
Hai scritto tutto bene? Fai il copia incolla.
A me funge regolarmente:

Codice: Seleziona tutto

8-) ./case_minore_di_mio.sh
Quanti anni hai?
19
Prego, entra pure!!
8-) ./case_minore_di_mio.sh
Quanti anni hai?
17
non puoi entrare
8-) 

Codice: Seleziona tutto

echo "Quanti anni hai?"

read ANNI

case $ANNI in

	#[0-9]|1[0-7]) echo "non puoi entrare";;
	($((anni < 18))*) echo "non puoi entrare";; # non funziona
	
		*) echo "Prego, entra pure!!";;
		
			esac

exit 0

Codice: Seleziona tutto

dev@null:~/Documenti/2023/Appunti-comandi$ ./case-esempio.sh 
Quanti anni hai?
19
non puoi entrare
Ops, mentre scrivo ho visto l' errore... La variabile è scritta maiuscola la tua minuscola :D

Funziona, sorry!!
Al di la delle impostazioni culturali :birra:
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4390
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: [Risolto] Comando case minore o maggiore di

Messaggio da UbuNuovo »

@Wile Con solo bash si lavora con gli interi.
Per i calcoli con decimali si usa bc, io in genere uso una funzioncina awk che mi permette di fare calcoli trigonometrici, logaritmioci etc.
Salva l'Ucraina! 🇺🇦
Avatar utente
Pehua
Prode Principiante
Messaggi: 241
Iscrizione: martedì 19 aprile 2022, 9:02
Desktop: Ubuntu
Distribuzione: Ubuntu 22.04.4 LTS
Sesso: Maschile

Re: [Risolto] Comando case minore o maggiore di

Messaggio da Pehua »

wilecoyote ha scritto:
mercoledì 8 febbraio 2023, 21:20
) Salve, carino lo script @UbuNuovo, peccato che non accetti i decimali:

Codice: Seleziona tutto

wilecoyote@CactusField:~$ ./case_minore_di_mio.sh
Quanti anni hai?
16
Spiacente, non puoi entrare…
wilecoyote@CactusField:~$ ./case_minore_di_mio.sh
Quanti anni hai?
19
Prego, entra pure!!
wilecoyote@CactusField:~$ ./case_minore_di_mio.sh
Quanti anni hai?
19,1
Spiacente, non puoi entrare…
Ho integrato il messaggio di risposta negativa.

:: Ciao
Ciao, funziona invece, avevo fatto l' erroe di copiare senza accorgermi della differenza della variabile maiusc/minusc...

Non solo funziona ma semplifica la sintassi :sisi:

EDIT:
19,1 non mi interessa (e nessuno direbbe che ha 19,1 anni :lol: ), volevo solo capire come usare i comparatori in case, la donde fosse possibile...

Grazie comunque.
Al di la delle impostazioni culturali :birra:
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 8 ospiti