Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    160

    [BASH] Problemino con script

    Ciao

    Sto cercando di capire perché il seguente script non modifica i file come dovrebbe (non fa assolutamente niente). Qui sotto il codice:

    codice:
    #!/bin/bash
    
    #
    #   Questo è un piccolo script che prende come argomenti:
    #   - il pathname di una directory
    #`  - il pathname di un file contenente testo
    #`  - una parola chiave
    #   - un'opzione per indicare se la ricerca è case sensitive oppure no
    #
    #   Lo script deve individuare tutti i file contenuti nella directory (ricorsivamente), che abbiano
    #   l'estensione specificata (o tutti se assente) e che non contengano la parola chiave specificata 
    #   (o tutti se assente)
    #
    #   Deve, inoltre, aggiungere (all'inizio, prima del testo esistente) ad ognuno di questi file il 
    #   testo contenuto nel file di testo specificato
    #
    
    
    if [[ -z "$1" && -z "$2" ]];    # Controlla la presenza degli argomenti
    then
       echo "Usage: `basename $0` [PATHNAME] [TEXTFILEPATH] {KEYWORD} {EXTENSION} {-c}"
       echo
       exit 65
    fi
    
    if [[ -z "$3" && -z "$4" ]];   # Se non sono presenti la keyword e l'estensione...
    then
       if [[ "$5" = "-c" ]];   # Se è presente l'opzione -c allora la ricerca è case sensitive
       then
          for filename in $(find $1 -name "*" -type f)
          do
          wd="$1"
          cat $2 $filename > $wd/filetmp.txt 
          mv $wd/filetmp.txt $filename
          done
       else
       for filename in $(find $1 -iname "*" -type f)     # ...altrimenti è case insensitive
       do
          wd="$1"
          cat $2 $filename > $wd/filetmp.txt 
          mv $wd/filetmp.txt $filename
       done
       fi
    fi
    
    if [[ -n "$3" && -z "$4" ]];     # Se è presente la keyword e non è presente l'estensione
    then
       if [[ "$5" = "-c" ]];    # Se è presente l'opzione -c allora la ricerca è case sensitive
       then
          for filename in $(find $1 -name "*" -type f | xargs grep -ivq "$3")
          do
          wd="$1"
          cat $2 $filename > $wd/filetmp.txt 
          mv $wd/filetmp.txt $filename
          done
       else
       for filename in $(find $1 -iname "*" -type f | xargs grep -ivq "$3")     # ...altrimenti è case insensitive
       do
          wd="$1"
          cat $2 $filename > $wd/filetmp.txt
          mv $wd/filetmp.txt $filename
       done
       fi
    fi
    
    if [[ -z "$3" && -n "$4" ]];     # Se non è presente la keyword ed è presente l'estensione
    then
       if [[ "$5" = "-c" ]];     # Se è presente l'opzione -c allora la ricerca è case sensitive
       then
          for filename in $(find $1 -name "*.$4" -type f)
          do
          wd="$1"
          cat $2 $filename > $wd/filetmp.txt 
          mv $wd/filetmp.txt $filename
          done
       else
       for filename in $(find $1 -iname "*.$4" -type f)    # ...altrimenti è case insensitive
          do
          wd="$1"
          cat $2 $filename > $wd/filetmp.txt
          mv $wd/filetmp.txt $filename
       done
       fi
    fi
    
    # Altrimenti significa che sono presenti sia la keyword che l'estensione..
    
    if [[ "$5" = "-c" ]];      # Se è presente l'opzione -c allora la ricerca è case sensitive
    then
       for filename in $(find $1 -name "*.$4" -type f | xargs grep -ivq "$3")
       do
       wd="$1"
       cat $2 $filename > $wd/filetmp.txt 
       mv $wd/filetmp.txt $filename
       done
       else
       for filename in $(find $1 -iname "*.$4" -type f | xargs grep -ivq "$3")      # ...altrimenti è case insensitive
       do
          wd="$1"
          cat $2 $filename > $wd/filetmp.txt
          mv $wd/filetmp.txt $filename
       done
       fi
    fi
    
    exit 0
    Chi può aiutarmi?

    Grazie.

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301

    Moderazione

    Scusa, ma questo non lo faccio passare: è l'ennesimo titolo "Problemino con...".

    Maggiore specificità nell'indicare il problema è richiesta: tutti coloro che fanno una domanda riguardo bash hanno un problema con uno script.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

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.