View previous topic :: View next topic |
Author |
Message |
trigg Apprentice
Joined: 14 Jun 2018 Posts: 179
|
Posted: Thu Jul 19, 2018 5:59 am Post subject: |
|
|
mi faccio una ricerca su case statement
che non conosco e non ho mai usato
se devo riscrivere qualcosa mi piacerebbe usare case statement.
-quando usersò elif , comedevo fare con fi ?
basta un endif oppure devo chiudere con fi moltiplicato if? |
|
Back to top |
|
|
sabayonino Veteran
Joined: 03 Jan 2012 Posts: 1008
|
Posted: Thu Jul 19, 2018 10:00 am Post subject: |
|
|
case stantment è "case". te l'ho anche scritto con un esempio
idem con esempio per
if
elif
elif
[...]
fi
o
if
elif
elif
[...]
else
fi
i "if , else , fi " troppo nidificati possono portare a problemi di logica e sono brutti da vedere (poi...degustibus)
devi ragionare in cascata... _________________ LRS i586 on G.Drive
LRS x86-64 EFI on MEGA |
|
Back to top |
|
|
trigg Apprentice
Joined: 14 Jun 2018 Posts: 179
|
Posted: Thu Jul 19, 2018 12:53 pm Post subject: |
|
|
manca solo
Code: | if [[ -z $REPLY ]] ; then
echo "scelta non valida"
fi |
che non ho capito come impostarlo
TRIGG.sh GENTOO TERMINAL MANAGER
dopo non so se mancano altri comandi gentoo di base che sto ignorando completamente |
|
Back to top |
|
|
antonellocaroli Guru
Joined: 11 Aug 2016 Posts: 503
|
Posted: Thu Jul 19, 2018 1:57 pm Post subject: |
|
|
ciao
questo é un esempio di una funzione per una scelta di un valore, dando una corrispondenza sbagliata t avvisa che non ahi scelto bene e ti rimanda alla scelta
Code: | function select_sample_rate() {
declare -a rates=( \
'44100' \
'48000' \
'88200' \
'96000' \
'176400' \
'192000' \
'352800' \
'384000' \
)
# no existing hardware support for '705600' and '768000'.
if [ "$1" == "" ]; then
local prompt='Selezionare un sample rate:'
else
local prompt="$1"
fi
sample_rate=""
while [ "$sample_rate" == "" ]
do
clear
echo -e "\n$prompt\n"
for (( i = 0 ; i < ${#rates[@]} ; i++ ))
do
echo -e "$i) \t${rates[$i]}";
done
echo
read -p 'Digitare il numero corrispondente e premere invio: ' choice
echo
if [[ "$choice" =~ ^[0-9]+$ ]] && [ "$choice" -lt ${#rates[@]} ]; then
sample_rate="${rates[$choice]}"
echo -e "Scelta effettuata: '$sample_rate'\n"
read -s -N1 -p 'Confermare e procedere? (s/N)'
clear
echo
[ "$REPLY" != "s" ] && sample_rate=""
else
echo -e "\a\nErrore: digitare un numero compreso tra 0 e $[ ${#rates[@]}-1 ]."
pausa
fi
done
}
|
questo un esempio per il controllo dell'utente
Code: | function run_as_root() {
[ "$(whoami)" == "root" ] || {
echo -e '\a\nATTENZIONE: questo script deve essere eseguito dal "SuperUser" (utente root).'
exec su -c "$0"
}
}
|
questa la pausa che viene richiamate quando serve
Code: | function pausa() {
echo
read -s -p 'Premere "Invio" per continuare...'
clear
echo
} |
spero ti possono essere da spunto |
|
Back to top |
|
|
trigg Apprentice
Joined: 14 Jun 2018 Posts: 179
|
Posted: Thu Jul 19, 2018 5:35 pm Post subject: |
|
|
ciao antonello
ho letto più volte lo script
e mi son perso qui
Code: | for (( i = 0 ; i < ${#rates[@]} ; i++ )) |
non conosco i caratteri speciali come ++
e non ho ancora chiaro il significato di i z n
però sto imparando
approfondirò lo script per capire di più |
|
Back to top |
|
|
sabayonino Veteran
Joined: 03 Jan 2012 Posts: 1008
|
Posted: Thu Jul 19, 2018 6:06 pm Post subject: |
|
|
tipica punteggiature del C++
equivale a
Code: | for i in ${rates[@]} ; do [...] ; done |
o comunemente detti cicli
Code: | for i in 1 2 3 4 5 ; do echo $i ; done
1
2
3
4
5
|
Code: | for e in {0..5} ; do echo $e ; done
0
1
2
3
4
5
|
Code: | for t in mio tuo suo loro ; do echo $t ; done
mio
tuo
suo
loro
|
In una cartella contenente *.mp3
Code: | for i in *.mp3 ; do echo $i ; done
01_tunderstruck.mp3
02_bruce_springsteen_the_river.mp3
05_dire_straits_on_every_streets.mp3
|
di modi ce ne sono parecchi
function run_as_root () {
codice
}
come scritto in precedenza ,è la dichiarazioe di funzione delle vecchie versioni di bash , seppur ancora compatibili , attualmente
Code: | run_as_root ()
codice
}
|
_________________ LRS i586 on G.Drive
LRS x86-64 EFI on MEGA |
|
Back to top |
|
|
trigg Apprentice
Joined: 14 Jun 2018 Posts: 179
|
Posted: Thu Jul 19, 2018 7:14 pm Post subject: |
|
|
Quote: | n una cartella contenente *.mp3
Codice:
for i in *.mp3 ; do echo $i ; done
01_tunderstruck.mp3
02_bruce_springsteen_the_river.mp3
05_dire_straits_on_every_streets.mp3 |
quindi lo potrei usare per cercare file per estensione e catalogarli
è la prima cosa che mi è venuta in mente
forse la più semplice
quindi quando leggo for n è come leggere for x
oppure ci sono lettere che hanno un valore/significato definito |
|
Back to top |
|
|
sabayonino Veteran
Joined: 03 Jan 2012 Posts: 1008
|
Posted: Thu Jul 19, 2018 7:44 pm Post subject: |
|
|
"n" "x" "ciccio" , sono solo delle variabili che prenderanno un determinato valore all'interno del ciclo.
conta da 1 a 5
Code: | for i in {1..5} ; do echo $i ; done |
for : inizio ciclo
i : imposta la variabile "i" a prendere il primo valore
in : all'interno dell'espressione che segue (nell'esempio : 1)
do echo $i : stampane il relativo valore (1)
done ; fine del primo ciclo , prosegui aumentando "i" al valore successivo (2)
riprende il for ... e via così
ci possono essere esemi più complessi
imposta la Matrice A
A=(1,2,3,4,5)
Code: | for ciccio in ${A[@]} ; do echo $ciccio ; done |
stampa in sequenza i valori della matrice (dal primo all'ultimo) utilizando "ciccio" come variabile
A[0] = 1
A[1] = 2
...
Stampa elenco direcotry vuote della cartella home (l'esempio non ha senso perchè basta il solo comando find , ma è per rendere l'idea
Code: | for d in "$(find /home/user -type d -empty)" ; do echo $d ; done |
_________________ LRS i586 on G.Drive
LRS x86-64 EFI on MEGA |
|
Back to top |
|
|
trigg Apprentice
Joined: 14 Jun 2018 Posts: 179
|
Posted: Thu Jul 19, 2018 8:01 pm Post subject: |
|
|
ricevuto
grazie sabayonino
mi sarà più facile leggere i tutorial e vabbè chissà quando farò uno script bello e complesso
intanto ci provo |
|
Back to top |
|
|
sabayonino Veteran
Joined: 03 Jan 2012 Posts: 1008
|
|
Back to top |
|
|
trigg Apprentice
Joined: 14 Jun 2018 Posts: 179
|
Posted: Fri Jul 20, 2018 1:31 pm Post subject: |
|
|
https://paste.pound-python.org/show/Rvb8f1O0PXQEAsTIs2xT/
sopra il link dello script
ho aggiunto il comando per layman nella sezione Installa Rimuovi App
di seguito le istruzioni aggiunte
Code: | 4)
echo -e " Vuoi Aggiungere una voce Overlays?
Premi [S] per confermare , un'altro tasto per proseguire :>"
read -sn 1
if [ "$REPLY" = "s" -o "$REPLY" = "S" ]
then
read -p "aggiungi Overlay >" overlays
a="layman -a $overlays"
for i in "$a"
do
$i
done
echo "Voce correttamente aggiunta"
read -p "Indica Categoria/Pacchetto da Installare >" install
b="emerge --ask $install"
for c in "$b"
do
$c
done
else
read -p "Indica Categoria/Pacchetto da Installare >" instal
bb="emerge --ask $instal"
for d in "$bb"
do
$d
done
fi
;; |
|
|
Back to top |
|
|
sabayonino Veteran
Joined: 03 Jan 2012 Posts: 1008
|
|
Back to top |
|
|
trigg Apprentice
Joined: 14 Jun 2018 Posts: 179
|
Posted: Fri Jul 20, 2018 6:13 pm Post subject: |
|
|
a proposito di layman
ho notato che con eix quando cerco un pacchetto
ricevo una lista infinita di pacchetti
quindi preferisco ogni volta eliminare il repository una volta installato il pacchetto
di conseguenza ho modificato il mio script
così
Code: | 4)
echo -e " Vuoi Aggiungere una voce Overlays?
Premi [S] per confermare , un'altro tasto per proseguire :>"
read -sn 1
if [ "$REPLY" = "s" -o "$REPLY" = "S" ]
then
read -p "aggiungi Overlay >" overlays
a="layman -a $overlays"
for i in "$a"
do
$i
done
echo "Voce correttamente aggiunta"
layman -S
echo "Voce correttamente aggiornata"
read -p "Indica Categoria/Pacchetto da Installare >" install
b="emerge --ask $install"
for c in "$b"
do
$c
done
echo -e " Vuoi rimuovere la voce Overlays aggiunta prima?
Premi [Y] per confermare , un'altro tasto per proseguire :>"
read -sn 1
if [ "$REPLY" = "y" -o "$REPLY" = "Y" ]
then
layman -d $overlays
echo -e "Overlays rimosso correttamente"
else
app
fi
else
read -p "Indica Categoria/Pacchetto da Installare >" instal
bb="emerge --ask $instal"
for d in "$bb"
do
$d
done
fi
echo
echo -e "${YELLOW} !!! ESEGUITO !!! "
echo
echo -e "${LCYAN} premi un tasto per continuare" ; read -n1 ; app ;; |
cos' da poter eliminare il repository ed avere più controllo sui pacchetti.
anche se avrei voluto impostare lo script in con questa logica
Code: | echo -e " Vuoi Aggiungere una voce Overlays? premi invio se non vuoi aggiungerlo altrimenti scrivi il repository da aggiungere |
che dovrebbe tradursi in
if [ "$1" == "" ]; then
passa ad installare
altrimenti aggiungi repo |
|
Back to top |
|
|
sabayonino Veteran
Joined: 03 Jan 2012 Posts: 1008
|
Posted: Fri Jul 20, 2018 6:19 pm Post subject: |
|
|
ricevi più pacchetti perchè le stesse versioni di un pacchetto possono essere presenti sia in portage che in overlay , magari con USE differenti oppure per questioni di dipendenze
Non ha senso rimuoverlo. se aggiorni "eix" rimuovi anche l'elenco pacchetti dell'overlay
"eix" permette la ricerca anche nel singolo overlay
ti suggerisco di leggere l'help di "eix"
Code: | -O, --overlay Match packages from overlays
--in-overlay OVERLAY Match packages from OVERLAY
|
_________________ LRS i586 on G.Drive
LRS x86-64 EFI on MEGA |
|
Back to top |
|
|
trigg Apprentice
Joined: 14 Jun 2018 Posts: 179
|
Posted: Sat Jul 21, 2018 8:04 am Post subject: |
|
|
quante cose ci sono da sapere su gentoo .
una domanda su sabayon
quando ho usato sabayon , la mia critica a riguardo era il fatto che non disponeva di molti pacchetti
ad esempio youtibedl-gui
se uso questo script per sabayon
non usando rigo , entropy ed equo
ma usando solo emerge e portage cosa succede?
la domanda vera è
posso utilizzare overlay in sabayon usando layman ?
ad esempio questo è youtube-del-gui
http://gpo.zugaina.org/media-sound/mps-youtube
il repository riguradano gentoo e funtoo
e questo è il repo di sabayon
http://gpo.zugaina.org/Overlays/sabayon-distro
ma non c'è youtube-dl-gui
se uso lo script per sabayon cosa succede? |
|
Back to top |
|
|
fedeliallalinea Administrator
Joined: 08 Mar 2003 Posts: 30838 Location: here
|
Posted: Sat Jul 21, 2018 8:56 am Post subject: |
|
|
Non posso aiutarti con sabayon non l'ho mai usata.
Per questioni di sabayon ti chiedo di aprire un thread nel Forum di discussione italiano visto che qui ci vanno solo le discussioni riguardanti Gentoo. _________________ Questions are guaranteed in life; Answers aren't. |
|
Back to top |
|
|
sabayonino Veteran
Joined: 03 Jan 2012 Posts: 1008
|
|
Back to top |
|
|
trigg Apprentice
Joined: 14 Jun 2018 Posts: 179
|
Posted: Sun Jul 22, 2018 5:13 pm Post subject: |
|
|
una piccola modifica
Code: | echo "devi prima scaricare l'ebuild"
echo "premi un tasto per continuare" ; read -n1
cd /home/trigg/Scaricati/
read -p "Indica categoria/pacchetto :>" dir
mkdir -p /usr/local/portage/$dir
for ebld in *.ebuild
do
cp $ebld /usr/local/portage/$dir
mv $ebld /mnt/DATI/gentoo/'installazione gentoo'/ebuild/
cd /usr/local/portage/$dir
repoman manifest
emerge --ask $dir
done |
adesso basterà solo scaricare l'ebuild ed indicare categoria/pacchetto
inoltre è stata aggiunta l'opzione etc-update qualora fosse richiesta
di seguito il link
trigger gentoo termianl manager update
per sabayon ok , è solo che è stata la distro che mi ha avvicinato a linux 3 o 4 anni fa
dovrei avere ancora il cd che non sono mai riuscito a far partire , così son passato a kubuntu
a settembre con il ritorno del fresco ho l'intenzione di installare sabayon e vabbè se dovrò far domande le farò sul forum di sabayon |
|
Back to top |
|
|
zar Marco Guru
Joined: 09 Sep 2016 Posts: 445 Location: Colle Umberto ( TV )
|
Posted: Mon Oct 08, 2018 3:04 am Post subject: |
|
|
Ero curioso di provare il tuo script, graficamente è gratificante.
Per ora sembra fatto molto bene, mi riservo di provarlo un pò in questi giorni, ma sembra proprio un ottimo lavoro |
|
Back to top |
|
|
zar Marco Guru
Joined: 09 Sep 2016 Posts: 445 Location: Colle Umberto ( TV )
|
Posted: Sun Dec 09, 2018 2:00 pm Post subject: |
|
|
Sto smanettando un po' con il tuo script, è fatto molto bene, ho provato ad aggiunger,e l'aggiornamento del portage tree in cerca app, ma è una rindondanza.
Poi volevo sapere se era possibile inserire la ricerca di eix via categorie, e sono riuscito, però effettivamente non è molto utile senza autocompletamento. Secondo voi è possibile implementare tale funzione in uno script?
A titolo puramente informativo, non voglio rubare il lavoro di nessuno |
|
Back to top |
|
|
|