[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Slackit.org] Script BASH... help!
From: |
Beppe |
Subject: |
Re: [Slackit.org] Script BASH... help! |
Date: |
Wed, 12 Oct 2005 01:51:09 +0200 |
User-agent: |
KMail/1.8.2 |
Alle 01:12, mercoledì 12 ottobre 2005, Andrea ha scritto:
> puoi mandare tutto il file .sh?
a tuo rischio e pericolo, anche perchè con bash non sono ancora molto capace e
quindi i miei scripts sono molto incasinati :)
il problema è alla riga 100 della mail
-------------inizio script----------------------------------------------------
#!/bin/bash
#--- Variabili usate nello script ---
TOT=0
PARZ=O
#---Funzioni usate nello script ---
function NIENTECAZZATE
{
# serve a controllare che i dati inseriti siano corretti
if [ "$?" = "1" ];
then
exit 1
fi
}
function CALCOLAILTOTALE
{
# Genera una lista dei files ed aggiunge un segnale di fine, poi...
ls "$DIRECTORY" > "$DIRECTORY/.checklist"
echo "#END#" >> "$DIRECTORY/.checklist"
exec < "$DIRECTORY/.checklist"
MEROCONTO
}
function MEROCONTO
{
# ...calcola il totale dei files nella lista
read "FILENAME"
if [ "$FILENAME" = "#END#" ];
then
echo "$TOT da inviare"
else
TOT=$((TOT+1))
MEROCONTO
fi
}
function INVIALACARTELLA
{
# una volta scoperto il totale dei files apre una barra di progressione e
procede all'invio per email dei files contenuti nella cartella selezionata
exec < "$DIRECTORY/.checklist"
dcopRef=`kdialog --progressbar "Premi ANNULLA per interrompere" $TOT`
dcop $dcopRef showCancelButton true
until test "true" == `dcop $dcopRef wasCancelled`; do
read "FILENAME"
if [ "$FILENAME" = "#END#" ];
then
dcop $dcopRef close
rm "$DIRECTORY/.checklist"
echo Fatto
exit 0
fi
date | mutt -a "$DIRECTORY/$FILENAME" -s "$FILENAME" $SENDTO
PARZ=$((PARZ+1))
echo "$PARZ/$TOT - $DIRECTORY/$FILENAME inviato a $SENDTO"
inc=$((`dcop $dcopRef progress` + 1))
dcop $dcopRef setProgress $inc;
done
dcop $dcopRef close
echo Operazione annullata
exit 2
}
function FAILEDOMANDE
{
# Se non sono stati passati argomenti validi da linea di comando i dati
necessari vengono ricavati tramite kdialog
DIRECTORY=`kdialog --title "Quale directory inviare?" --getexistingdirectory
~`
NIENTECAZZATE
SENDTO=`kdialog --inputbox "A quale indirizzo email?"`
NIENTECAZZATE
}
# --- esecuzione script
# se il primo argomento è una cartella esistente ed il secondo un indirizzo
email tutto bene, se no visualizza un help su terminale e ricava le
informazioni attraverso kdialog
if [ -x $1 ] && [ "${2#*}" == "@" ]; then
DIRECTORY=$1
SENDTO=$2
else
echo "Sendfolder si usa con due argomenti: il primo è una cartella esistente,
il secondo è l'indirizzo email a cui inviare i files"
FAILEDOMANDE
fi
CALCOLAILTOTALE
INVIALACARTELLA
rm "$DIRECTORY/.checklist"
exit 0
-------------fine script------------------------------------------------------
ovvero con
if [ -x $1 ] && [ "${2#*}" == "@" ]; then
DIRECTORY=$1
SENDTO=$2
dove lo script dovrebbe verificare che l'argomento 1 sia una directory
esistente e l'argomento 2 contenga un @. nel caso in cui entrambe le
condizioni si verifichino gli argomenti vengono utilizzati, altrimenti viene
usato kdialog per richiedere quale cartella inviare ed indirizzo a cui
inviarla
Buona notte a tutti :)
Beppe