[Risolto] Problema condizione if

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
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] Problema condizione if

Messaggio da Pehua »

Ciao, ho scritto un piccolo script che mi cambia lo sfondo del desktop se avviviene una determinata corrispondenza ad una variabile:

Codice: Seleziona tutto


#!/bin/bash
#
# mercoledì-01-02-2023
# Ora:  7:36
# By dev
#
. colori.sh

# La variabile Luna corrisponde a un numero fra 0 e 16
luna=`sed -n '27p' ~/.conky/inf | cut -d "=" -f2`


# Se la variabile trova corrispondenza con 15 allora cambia sfondo del desktop
if [[ "$luna" = "15" ]]; then

# Imposta lo sfonfo desiderato centrato
gsettings set org.gnome.desktop.background  picture-uri-dark /home/dev/Immagini/fullmoon.jpg
gsettings set org.gnome.desktop.background picture-options 'centered'

fi

# Se la variabile trova corrispondenza con 16 allora cambia sfondo del desktop
if [[ "$luna" = "16" ]]; then

# Imposta lo sfonfo desiderato centrato
gsettings set org.gnome.desktop.background  picture-uri-dark /home/dev/Immagini/fullmoon.jpg
gsettings set org.gnome.desktop.background picture-options 'centered'

fi

# Esce dallo script
exit 0
#
# dev usa: Ubuntu 22.04.1 LTS x86_64 ~ DE: ubuntu ~ Kernel: 5.15.0-58-generic

Sembra funzionare, l' ho provato assegnando alla variabile Luna direttamente il numero 15 e poi ho provato con il 16, tutto liscio.

Ma la cosa che vorrei aggiungere e non so come fare e' che quando sara' finito il numero corrispondente (15 o 16) e cambiera' di nuovo non essendo piu ne 15 ne 16, torni allo sfondo che ho di solito, lo posso assegnare come ho asegnato quello nel caso in cui la variabile corrisponda ma non so come fare con la condizione if a dirgli di farlo di nuovo quando la corrispondenza non sara' piu' la stessa.

Spero di essermi spiegato bene.

Grazie ragazzi :birra:
Ultima modifica di Pehua il mercoledì 1 febbraio 2023, 16:20, modificato 1 volta in totale.
Al di la delle impostazioni culturali :birra:
Lucio C
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 363
Iscrizione: venerdì 10 dicembre 2021, 18:33
Desktop: fvwm
Distribuzione: (X)Ubuntu20@home; openSUSE42.3@work
Sesso: Maschile
Località: Paneropoli

Re: Problema condizione if

Messaggio da Lucio C »

NO, non ho capito, soprattutto dove sta il loop tra 0 e 15 (direi che o e' tra 0 e 15 o tra 1 e 16, stile C o stile Fortran :D) ma se il problema e' "quando si arriva alla fine ripartire dall'inizio" la soluzione (gia' citata) si chiama aritmetica modulare: a mod 16 e' il resto di a/16 (in interi) ossia un numero da 0 a 15, p.es. (uso la sintassi csh perche' io conosco quello)

Codice: Seleziona tutto

set a = 17
@ a = $a % 16
echo $a
il valore di $A ritornato sara' in questo caso 1. Oppure in bc (i primi tre sono comandi, l'ultimo il risultato)

Codice: Seleziona tutto

a=17
b=a%16
b
1
Non so quale sia la sintassi dell'operatore modulo in bash ne' quale livello di aritmetica supporti, ma sospetto possa essere % come in csh o bc (alla peggio uno puo' sempre fare i calcoli in bc e assegnare il risultato a una variabile con delle backquotes)
The reasonable man adapts himself to the world: the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man. (G.B. Shaw)
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: Problema condizione if

Messaggio da Pehua »

@Lucio C Scusa mi saro' espresso male, niente ciclo e nulla di tutto cio'.

In pratica mi serve per mettere come sfondo una luna piena quando effettivamente c'e' la luna piena e siccome le info delle fasi lunari le scarico per il conky tramite un sito, il parametro che ho da prendere dalle info del sito sono numeri, che quando coincidono con 15 o 16 vuol dire che e' luna piena ed allora faccio questo cambio in automatico del desktop.

Ho trovato la soluzione cercando in rete come si scrive bene if ed ho trovato una buona guida, quindi ho risolto cosi.

Codice: Seleziona tutto


#!/bin/bash

# La variabile Luna corrisponde a un numero fra 0 e 16
luna=`sed -n '27p' ~/.conky/inf | cut -d "=" -f2`

# Se la variabile trova corrispondenza con 15 o 16 allora cambia sfondo del desktop
if [[ "$luna" = "15" ]] || [[ "$luna" = "16" ]]; then

cambia sfondo desktop

else

rimette quello originale

fi

exit 0

Pare funzioni bene, se avete un codice piu' facile o dei consigli grazie ben accetto tutto.
Al di la delle impostazioni culturali :birra:
nik1404
Prode Principiante
Messaggi: 205
Iscrizione: martedì 6 novembre 2007, 18:55
Desktop: mate
Distribuzione: ubuntu 18.04 x86_64

Re: Problema condizione if

Messaggio da nik1404 »

Pehua ha scritto:
mercoledì 1 febbraio 2023, 16:20
....
ho trovato una buona guida,....
....
potresti indicarla?
grazie
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 1 ospite