Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    un semplice script bash ..

    diventato un incubo!!!!

    è semplice da realizzare da quallo ke ho capito, ma nn ne vengo fuori.. mi dareste una manina per piacere :P

    deve fare questo:

    1) creare se non c'è una dir
    2) spostare i files all'interno di questa dir
    3) se inserisco l'opzione -z creare un file tar.gz all'interno della suddetta dir.

    non ne vengo fuori .. forse per l'annidamento ?

    codice:
    #!/bin/bash
    while getopts :a:z:defg OPZIONE
    do
        case $OPZIONE in
            a) echo "Opzione \"a\" con argomento $OPTARG." & {
    
           if ! mkdir -p $OPTARG
            then
                echo "Non e' stato possibile creare la directory $OPTARG"
            else
                echo "e' stata creata la directory $OPTARG"
                find ~ -atime 10 -exec cp -a {} $OPTARG \;
                echo "ho spostato i files"
            fi
                                                            };;
    
            z) echo "Opzione \"z\" che non richiede argomento." &
    
            {
                    echo "mi preparo a fare tar escludendo il tar stesso"
                    tar czvf $OPTARG/$OPTARG.tar.gz -C $OPTARG/ --exclude $OPTARG.tar.gz .
                    echo "fine"
            };;
    
            *) echo "Indicata un'opzione illegale.";;
    
        esac
    
    done
    help help
    - Ander Costruscion -

  2. #2
    Utente di HTML.it L'avatar di Ilmalcom
    Registrato dal
    Oct 2002
    Messaggi
    1,345

    Re: un semplice script bash ..

    Originariamente inviato da pannikeos
    codice:
    #!/bin/bash
    while getopts :a:z:defg OPZIONE
    do
        case $OPZIONE in
            a) echo "Opzione \"a\" con argomento $OPTARG." & {
    
           if ! mkdir -p $OPTARG
            then
                echo "Non e' stato possibile creare la directory $OPTARG"
            else
                echo "e' stata creata la directory $OPTARG"
                find ~ -atime 10 -exec cp -a {} $OPTARG \;
                echo "ho spostato i files"
            fi
                                                            };;
    Premetto che è da _molto_ che non mi dedico al bash scripting, ma mi pare che tu abbia usato una sintassi un po' strana :master:

    Hai detto che volevi controllare che la directory non esistesse prima di crearla, perciò sicuramente intanto manca un controllo con test.
    codice:
    if ![ -d "$OPTARG" ]
       then
       mkdir -p "$OPTARG"
       if [ $? -eq 0 ]
          then
          blablablablala //Fa ciò che vuoi
       else
          echo "Errore nel creare la directory"
       fi
    fi
    Mi pare che mkdir dia come exit status 0 se ha successo, 1 altrimenti...

  3. #3
    ho sistemato diciamo il problema della dir con un test -d

    ma il problema dell'opzione -z mi sta trucidando!

    il testo è il seguente (a capirlo :P ):

    Progettare uno script per la shell Bash che prenda un parametro sulla linea di comando. Il parametro deve essere una directory a cui l utente possa accedere, leggendone il contenuto e memorizzandovi nuovi file. Se la directory non esiste, deve essere creata. Lo script dovr`a archiviare (copiandoli) nella directory suddetta i file presenti nella propria home e nelle relative sottodirectory a cui non si accede da pi`u di una settimana. Prevedere la possibilit`a di invocare lo script con l opzione -z che, invece di copiare i file che rispondono al requisito sopra esposto, crea un unico archivio .tar.gz (creato con il comando tar e contenente i file), memorizzando quest ultimo nella directory passata come primo parametro.
    - Si gestiscano opportunamente gli errori.
    - Si commenti opportunamente il codice.
    - Si provi lo script su alcuni esempi significativi.
    - Ander Costruscion -

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.