The UNIX and Linux Forums  


Go Back   UNIX e Linux Forum > Inizio Forum > Shell scripting e di programmazione
.
google unix.com



Shell scripting e di programmazione Pubblica domande su KSH, CSH, SH, Bash, Perl, PHP, sed, awk e da altri script di shell e linguaggi di scripting shell qui.

Più di UNIX e Linux Forum Argomenti potreste trovare utili
Filo Thread Starter Forum Risposte Ultimo Post
Errore con if .. Please help jisha Shell scripting e di programmazione 1 01-16-2008 07:13 AM
mentre leggere loop w / a nidificata se dichiarazione - non trattare singolarmente ogni ingresso littlefrog Shell scripting e di programmazione 7 12-11-2007 09:49 PM
dichiarazione, se in un ciclo while Bobo UNIX for Dummies Domande & Risposte 2 11-07-2006 12:38 PM
se per la dichiarazione in loop di una stringa Sniper Pixie UNIX for Dummies Domande & Risposte 7 03-02-2006 07:28 AM
catrame errore dichiarazione Legato UNIX for Dummies Domande & Risposte 3 03-29-2005 10:58 PM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Cerca in questo Thread Rate Thread Modalità di visualizzazione
  #1 (permalink)  
Old 09-19-2007
lumdev lumdev is offline
Utente Registrato
  
 

Join Date: Sep 2006
Posizione: Belgio
Interventi: 6
Per loop dichiarazione - di cattura errore

Ho una domanda su di loop. (bash)

Ho il seguente esempio:

per i file in `ls *. txt»
fare
leggere file ...
fatto

Ora, quando vi è presente un file non c'è nessun problema, ora, quando non vi è alcun file presenti ottenere il seguente output standard nella mia casella di posta elettronica: "Nessun file o directory" script viene eseguito tramite crontab.

Ora vorrei prendere l'errore di cui sopra in modo non ho ricevuto nella mia mail di più, ma non ho idea di come fare questo.

Sono in grado di fare una dichiarazione, se prima "if [-f *. txt] ...", ma ci deve essere una soluzione migliore.

Thx.
  #2 (permalink)  
Old 09-19-2007
ajcannon ajcannon is offline
Utente Registrato
  
 

Join Date: Aug 2007
Ubicazione: Binfield, Berkshire. Regno Unito
Interventi: 91
se

Penso che l'uso del 'se' è una perfetta soluzione ragionevole. Avete bisogno di qualche tipo, se condizionale per determinare se il file esiste e un 'se' sarebbe OK
  #3 (permalink)  
Old 09-19-2007
porter porter is offline Forum Advisor  
Utente Registrato
  
 

Iscriviti Data: gennaio 2007
Interventi: 2.965
Citazione:
Originalmente inviato da lumdev View Post
Sono in grado di fare una dichiarazione, se prima "if [-f *. txt] ...", ma ci deve essere una soluzione migliore.
Controllare che il file in loop


Codice:
  for file in *.txt
  do
     if test -f $file
     then
        read file ...
     fi
  done

  #4 (permalink)  
Old 09-19-2007
cfajohnson's Avatar
cfajohnson cfajohnson is offline Forum Advisor  
Shell programmatore, autore
  
 

Iscriviti Data: marzo 2007
Luogo: Toronto, Canada
Messaggi: 2.362
Citazione:
Originalmente inviato da lumdev View Post
Ho una domanda su di loop. (bash)

Ho il seguente esempio:

per i file in `ls *. txt»

Non è questo il modo di loop, tramite i file. Non solo è ls inutili, che romperà il vostro script eventuali nomi di file contengono spazi o altri caratteri patologici. Utilizzare il jolly direttamente:


Codice:
for file in *.txt

Citazione:
fare
leggere file ...
fatto

Ora, quando vi è presente un file non c'è nessun problema, ora, quando non vi è alcun file presenti ottenere il seguente output standard nella mia casella di posta elettronica: "Nessun file o directory" script viene eseguito tramite crontab.

Ora vorrei prendere l'errore di cui sopra in modo non ho ricevuto nella mia mail di più, ma non ho idea di come fare questo.

Sono in grado di fare una dichiarazione, se prima "if [-f *. txt] ...", ma ci deve essere una soluzione migliore.

No, non puoi farlo, ma non andrà a buon fine se non vi è più di un file. Txt.

È possibile utilizzare una funzione:


Codice:
is_file() {
   test -f "$1"
}

is_file *.txt &&
 for file in *.txt
 do
   ...
 done

Il modo più sicuro è quello di controllare ogni file:


Codice:
for file in *.txt
do
  [ -f "$file" ] || continue
  ...
done

  #5 (permalink)  
Old 09-20-2007
lumdev lumdev is offline
Utente Registrato
  
 

Join Date: Sep 2006
Posizione: Belgio
Interventi: 6
Thx per le risposte.

Ho usato la soluzione con la funzione, ora non ho ricevuto alcuna "Nessun file o directory" output più.

Thx per l'aiuto cfajohnson.
Closed Thread

Segnalibri

Thread Tools Cerca in questo Thread
Cerca in questo Thread:

Ricerca Avanzata
Modalità di visualizzazione Vota questo thread
Vota questo thread:

Distacco regolamento
Tu non può post nuovo thread
Tu non può inviare una risposta
Tu non può postare allegati
Tu non può modificare i tuoi post

BB codice è Su
Smilies sono Su
[IMG] codice Su
Codice HTML è Chiuso
Trackbacks sono Su
Pingbacks sono Su
Refbacks sono Su




Tutti gli orari sono GMT -4. La data di oggi è 12:48 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traduzioni Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX e Linux Forum Content Copyright © 1993-2009. Tutti i diritti Reserved.Ad di gestione da RedTyger

Contenuti pertinenti URL da vBSEO 3.2.0