slackit-ml
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]