The UNIX and Linux Forums  

Go Back   Les systèmes UNIX et Linux Forums > Top Forums > De programmation et de script Shell
.
google unix.com



De programmation et de script Shell Posez vos questions à propos de KSH, CSH, SH, BASH, PERL, PHP, SED, awk et d'autres scripts shell et les langages de script shell ici.

Plus d'UNIX et Linux Forum Sujets Vous trouverez peut-être utile
Fil Thread Starter Forum Réponses Last Post
Erreur de déclaration si .. S'il vous plaît, aidez JISHA De programmation et de script Shell 1 01-16-2008 07:13 AM
tout lire en boucle w / a nested if - ne traite pas individuellement chaque entrée littlefrog De programmation et de script Shell 7 12-11-2007 09:49 PM
si, dans une boucle while bobo UNIX pour les nuls Questions et réponses 2 11-07-2006 12:38 PM
si déclaration en boucle d'une chaîne de caractères Sniper Pixie UNIX pour les nuls Questions et réponses 7 03-02-2006 07:28 AM
tar erreur déclaration legato UNIX pour les nuls Questions et réponses 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 Recherche sur ce Thread Rate Thread Modes d'affichage
  #1 (permalink)  
Old 09-19-2007
lumdev lumdev is offline
Registered User
  
 

Join Date: Sep 2006
Lieu: Belgique
Messages: 6
Pour loop statement - captures d'erreur

Je vais avoir une question à propos de boucles. (bash)

J'ai par exemple le texte suivant:

pour les fichiers dans `ls *. txt»
faire
lire le fichier ...
fait

Maintenant, quand il ya un fichier présent il n'ya pas de problème, maintenant, quand il n'y a pas de fichier présent je obtenir le résultat suivant dans ma boîte de courrier: "Aucun fichier ou répertoire" Script est exécuté via crontab.

Maintenant, je veux attirer l'erreur ci-dessus et je n'ai donc pas l'obtenir dans mon courrier, pas plus, mais je n'ai aucune idée de comment faire.

Je peux faire une première déclaration, si "if [-f *. txt] ...", mais il doit y avoir une meilleure solution.

Thx.
  #2 (permalink)  
Old 09-19-2007
ajcannon ajcannon is offline
Registered User
  
 

Join Date: Aug 2007
Lieu: Binfield, Berkshire. Royaume-Uni
Posts: 91
si

Je pense que l'utilisation du «si» est une solution tout à fait raisonnable. Vous avez besoin d'une sorte si conditionnelle pour déterminer si oui ou non votre fichier existe et un «si» serait OK
  #3 (permalink)  
Old 09-19-2007
porteur porter is offline Forum Advisor  
Registered User
  
 

Join Date: Jan 2007
Messages: 2965
Citation:
Posté par lumdev View Post
Je peux faire une première déclaration, si "if [-f *. txt] ...", mais il doit y avoir une meilleure solution.
Vérifiez le fichier dans la boucle


Code:
  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 online now Forum Advisor  
Shell programmeur, auteur
  
 

Join Date: Mar 2007
Lieu: Toronto, Canada
Messages: 2378
Citation:
Posté par lumdev View Post
Je vais avoir une question à propos de boucles. (bash)

J'ai par exemple le texte suivant:

pour les fichiers dans `ls *. txt»

Ce n'est pas la voie à la boucle par le biais de fichiers. Non seulement ls inutile, elle se cassera votre script si tout les noms de fichiers contenant des espaces ou autres caractères pathologiques. Utilisez le joker directement:


Code:
for file in *.txt

Citation:
faire
lire le fichier ...
fait

Maintenant, quand il ya un fichier présent il n'ya pas de problème, maintenant, quand il n'y a pas de fichier présent je obtenir le résultat suivant dans ma boîte de courrier: "Aucun fichier ou répertoire" Script est exécuté via crontab.

Maintenant, je veux attirer l'erreur ci-dessus et je n'ai donc pas l'obtenir dans mon courrier, pas plus, mais je n'ai aucune idée de comment faire.

Je peux faire une première déclaration, si "if [-f *. txt] ...", mais il doit y avoir une meilleure solution.

Non, vous ne pouvez pas faire cela, il ne parviendra pas s'il ya plus d'un. Txt.

Vous pouvez utiliser une fonction:


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

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

Le moyen le plus sûr est de vérifier chaque fichier:


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

  #5 (permalink)  
Old 09-20-2007
lumdev lumdev is offline
Registered User
  
 

Join Date: Sep 2006
Lieu: Belgique
Messages: 6
Merci pour les réponses.

J'ai utilisé la solution avec la fonction, je n'ai pas "Aucun fichier ou répertoire de" production plus.

Thx pour l'aide cfajohnson.
Closed Thread

Bookmarks

Thread Tools Recherche sur ce Thread
Recherche sur ce Thread:

Recherche avancée
Modes d'affichage Rate this thread
Rate this thread:

Règles de messages
Tu mai pas de nouvelles discussions: nonoui
Tu mai pas envoyer des réponses:
Tu mai pas envoyer des pièces jointes
Tu mai pas modifier vos messages

BB code est Sur
Smilies sont Sur
[IMG] code est Sur
Le code HTML est Hors tension
Trackbacks sont Sur
Pingbacks sont Sur
Refbacks sont Sur




Toutes les heures sont au format GMT -4. Le temps est maintenant 04:42 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traductions Langue Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Les systèmes UNIX et Linux Forums Content Copyright © 1993-2009. Tous droits Reserved.Ad de gestion par RedTyger

Content Relevant URLs par vBSEO 3.2.0