1. #1
    Invité de passage
    Inscrit en
    février 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : février 2008
    Messages : 2
    Points : 1
    Points
    1

    Par défaut [Shell Script] Problème de caractères

    Bonjour,

    je cherche a analyser une entrée afin de la rediriger dans le fichier adéquate
    si l'entrée contient une lettre a-zA-z je met la ligne dans "fichier_lettre"
    sinon je la met dans "fichier_chiffre" je ne prend pas en compte les caractères spéciaux

    et je suis bloquée a la condition if qui va tester si la ligne contient une lettre ou non

    pourriez-vous m'aider ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    #!/bin/bash
     
    count1=0
    count2=0
     
    if [ $# -ne 2 ]
    then 
    	echo "nombre d'arguments invalide."
    else
    	if [ -f $1 ] && [ -f $2 ]
    	then 
    		read var
    		while [ "$var" != "fin" ]
    		do
    			if [ $var [a-zA-Z] ]        << ne fonctionne pas		                         then
    				$var >> $1
    				let count1=$count1+1
    			else
    				$var >> $2
    				let count2=$count2+1
    			fi
    		done
    		echo "$(($count1+$count2)) ligne(s) lue(s)"
    		echo "$count1 ligne(s) écrite(s) dans fichier_lettre"
    		echo "$count2 ligne(s) écrite(s) dans fichier_chiffre"
    	else
    		echo "paramètres incorrecte, pas de fichiers"
    	fi
    fi

  2. #2
    Membre expérimenté Avatar de iblis
    Inscrit en
    janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : janvier 2007
    Messages : 510
    Points : 554
    Points
    554

    Par défaut

    et je suis bloquée a la condition if qui va tester si la ligne contient une lettre ou non
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if echo $var | grep [a-zA-Z]
    then
    	# blabla
    Le test est basé sur la valeur de retour de la commande exécutée en dernier (ici, grep).

    Tu peux bien sûr remplacer grep [a-zA-Z] par grep [:alpha:]. Jette un oeil à man grep pour plus de détail sur la syntaxe des regex (mais attention, la syntaxe reconnue varie d'une implémentation à l'autre, teste ce qui fonctionne chez toi).

  3. #3
    Invité de passage
    Inscrit en
    février 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : février 2008
    Messages : 2
    Points : 1
    Points
    1

    Par défaut

    a priori ça fonctionne mais j'ai maintenant un autre problème.

    Quand j'écris "fin" le programme se termine sans soucis alors que si j'écris quelque chose d'autre il me répète ce mot à l'infini c'est dû au fait que "read var" ne se situe pas dans la boucle.

    mais comment puis-je implémenter le read dans le while ?

    après plusieurs tests j'ai trouvé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while read var && [ "$var" != "fin" ]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Shell scripting] problème de connexion sur une machine distante
    Par Antheadousa dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 03/07/2014, 12h10
  2. Script de sauvegarde avec la date - Problème de caractères
    Par MonsieurPouet dans le forum Programmation et administration système
    Réponses: 7
    Dernier message: 20/12/2011, 19h36
  3. Script shell pour enlever les caractères spéciaux d'un nom de fichier
    Par babo dans le forum Shell et commandes GNU
    Réponses: 9
    Dernier message: 12/09/2008, 13h49
  4. problème de permission pour shell script
    Par Dirty Harry dans le forum Administration système
    Réponses: 5
    Dernier message: 21/08/2007, 12h51
  5. [VB script] Problème avec le caractère &
    Par eraim dans le forum VBScript
    Réponses: 1
    Dernier message: 01/12/2006, 12h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo