Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  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 :
    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 : 47

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

    Par défaut

    et je suis bloquée a la condition if qui va tester si la ligne contient une lettre ou non
    Code :
    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 :
    while read var && [ "$var" != "fin" ]

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •