shell script richiesta delucidazione

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
orso75
Linux 2.x
Linux 2.x
Messaggi: 218
Iscritto il: mar 31 mag 2005, 0:00
Località: Bologna

shell script richiesta delucidazione

Messaggio da orso75 »

Salve a tutti
su http://www.shelldorado.com ho trovato questo script
##########################################################################
# Title : timestamp - periodically write time stamp
# Author : Heiner Steven <heiner.steven@odn.de>
# Date : 1994-02-04
# Requires :
# Category : Debugging
# SCCS-Id. : @(#) timestamp 1.2 03/12/19
##########################################################################
# Beschreibung:
#
##########################################################################

PN=`basename "$0"` # Program name
VER='1.2'

Sek=${1:-60} # Interval (seconds)
case "$Sek" in
[0-9][0-9]*)
;; # correct
*)
echo "$PN - print time stamp, $VER"
echo "usage: $PN [interval]"
echo
echo "Prints current time all <Intervall> seconds"
echo "(default: 60)."
exit 1
esac

while true
do
echo "--------------------------------(`date`)------"
sleep $Sek
done
se ho capito bene dovrebbe eseguire il timestamp ad intervalli regolari.
se passo un valore deve prendere il valore che passo in alternativa prende 60 secondi.

ho prvato a laciarlo come
timestamp 5 (refresh ogni 5 secondi e mi ritorna
timestamp.sh - print time stamp, 1.2
usage: timestamp.sh [interval]

Prints current time all <Intervall> seconds
(default: 60).

se invece lo lancio con valori a 2 o più cifre
10 100 1000 etc funziona

mi sapeste spiagare perch'è ed eventualmente come abilitare i 5 sec.
Grazie a tutti
Orso

Avatar utente
bruno82
Linux 1.x
Linux 1.x
Messaggi: 148
Iscritto il: lun 16 mag 2005, 0:00
Località: Palemmmo
Contatta:

Messaggio da bruno82 »

Codice: Seleziona tutto

case "$Sek" in
[0-9][0-9]*)
;; # correct
*)
echo "$PN - print time stamp, $VER"
echo "usage: $PN [interval]"
echo
echo "Prints current time all <Intervall> seconds"
echo "(default: 60)."
exit 1
esac 
Il problema è che riconosce solo numeri con 2 cifre in input (dati dall'espressione [0-9][0-9] ).

Basta aggiungere un altro caso...

Codice: Seleziona tutto

case "$Sek" in
[0-9][0-9]*)
;; # correct
[0-9]*)
;; # also correct!
*)
echo "$PN - print time stamp, $VER"
echo "usage: $PN [interval]"
echo
echo "Prints current time all <Intervall> seconds"
echo "(default: 60)."
exit 1
esac
;)

Avatar utente
orso75
Linux 2.x
Linux 2.x
Messaggi: 218
Iscritto il: mar 31 mag 2005, 0:00
Località: Bologna

Messaggio da orso75 »

Grazie Ora provo subito!!

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Info: selezionando il testo potrai applicare velocemente i B

Messaggio da targzeta »

orso75 ha scritto: case "$Sek" in
[0-9][0-9]*)
Con questa forma riconosce validi solo gli input formati da due numeri e da qualsiasi altra cosa.
In particolare anche 23ddd va bene solo che poi sleep si arrabbia.
Non è che sia il massimo della bellezza questo script eh.
Comunque il sueggerimento di bruno funziona, ma anche lì c'è qualcosina da ridire, la sua aggiunta rende la precedente forma un suo sottoinsieme. Ovvero, quello che è riconosciuto da [0-9][0-9]*) è, a maggior ragione riconosciuto da [0-9]*) non credi bruno?

Spina

Avatar utente
bruno82
Linux 1.x
Linux 1.x
Messaggi: 148
Iscritto il: lun 16 mag 2005, 0:00
Località: Palemmmo
Contatta:

Messaggio da bruno82 »

Era un esempio didattico ;)

Rispondi