[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
Rampante Reduce
Rampante Reduce
Messaggi: 5492
Iscrizione: mercoledì 22 novembre 2006, 19:15
Desktop: KdePlasma
Distribuzione: EndeavourOS
Sesso: Maschile
Località: ~/Italia/Lazio/Viterbo/

Re: Comando case minore o maggiore di

Messaggio da GjMan78 »

MacBook Pro - Intel i5-3210 - 16 Gbyte Ram DDR3 - SSD 500 Gbyte x 2
»»» 𝗙𝗮𝗶 𝗶𝗹 𝗕𝗮𝗰𝗸𝘂𝗽! ¯\_(ツ)_/¯
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
Rampante Reduce
Rampante Reduce
Messaggi: 5492
Iscrizione: mercoledì 22 novembre 2006, 19:15
Desktop: KdePlasma
Distribuzione: EndeavourOS
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:
MacBook Pro - Intel i5-3210 - 16 Gbyte Ram DDR3 - SSD 500 Gbyte x 2
»»» 𝗙𝗮𝗶 𝗶𝗹 𝗕𝗮𝗰𝗸𝘂𝗽! ¯\_(ツ)_/¯
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: 4445
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: 4445
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: 4445
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
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 15384
Iscrizione: giovedì 20 agosto 2009, 16:21
Desktop: Kubuntu et alii
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: 4445
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