syntaxe pour comparer des chaines lors lecture d'un fichier [resolu] - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 29-09-2009 à 00:55:53
Seule la première syntaxe est correcte (cf. man bash). C'est quoi le k=1 qui ne sert à rien. Dans ton test le "^" est censé représenter quoi ? Si c'est un caractère il faut sans doute le protéger. Ton code est très mal indenté, voir pas du tout, donc pénible à lire et à comprendre.
Citation : fichier=~/fichier.txt |
Donne quelque chose de plus clair (sans préjuger du résultat).
Une adresse utile :
http://abs.traduc.org/abs-fr/
Marsh Posté le 29-09-2009 à 16:11:36
Merci pour le site, je n'ai pas encore été le voir mais l'ai enregistré en marque-pages.
J'ai eu la solution d'un autre forum sans trop savoir comment.
Voici la nouvelle version du script qui lit le fichier en mettant chaque ligne dans deux tableaux de variables et je parcours ensuite le tableau pour exécuter mes conditions sur le premier tableau (1er caractère de la ligne) et récupérer les données du second tableau :
Citation : #!/bin/bash |
Marsh Posté le 28-09-2009 à 21:27:53
Bonjour à tous,
Je suis nouveau en script shell et essaie de porter des scripts vbs en sh. Celui-ci consiste à lire un fichier et en écrire un autre selon le contenu lu.
Je n'arrive pas à comparer deux chaines !
Si je mets des espaces dans la comparaison (avant et après égal), il n'entre pas dans la condition :
fichier=~/fichier.txt
taillefichier=$(wc -l <$fichier); i=0; k=1
while [ $i -lt $taillefichier ]; do
i=$(($i+1))
if [ "$(head -n $i $fichier | tail -n 1)" = "^" ]; then echo $i; fi
done;
Si je ne mets pas des espaces dans la comparaison, il entre systématiquement dans la condition :
fichier=~/fichier.txt
taillefichier=$(wc -l <$fichier); i=0; k=1
while [ $i -lt $taillefichier ]; do
i=$(($i+1))
if [ "$(head -n $i $fichier | tail -n 1)"="^" ]; then echo $i; fi
done;
Je ne comprend pas pourquoi ? Merci de votre aide.
Message édité par alfredaube le 29-09-2009 à 16:12:34