Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/01/2007, 23h20   #1
Invité de passage
 
Inscription : janvier 2007
Messages : 3
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2007
Messages : 3
Points : 0
Points : 0
Par défaut problème de retour chariot

bonjour,

j'aimerai tester que la dernière ligne du fichier "a_sauver.txt" est terminée par un retour chariot pour cela j'ai écrit :

Code :
1
2
3
4
5
6
7
#!/bin/bash
#je recupere le dernier caractère du fichier par
last_char=`tail -c1 /mnt/DEDE/a_sauver.txt |rev`
if [ $last_char -ne \n ]
then echo "pas egal"
else echo "egal"
fi
malheureusement j'ai un erreur sur la ligne du test : "line 4: [: -ne: unary operator expected"

est ce que quelqu'un peut m'expliquer ce qui se passe ?
merci d'avance
gmandil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2007, 07h42   #2
Membre chevronné

 
Avatar de D[r]eadLock
 
Inscription : mai 2002
Messages : 504
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : mai 2002
Messages : 504
Points : 622
Points : 622
À mon avis il faut des "" autour de ton \n
__________________
1)Avant de poster, merci de lire les règles. 2)Utiliser [code] [/code] pour quoter le code ! 3)Conseils pour le forum C [a lire en entier!]
D[r]eadLock est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2007, 10h16   #3
Invité de passage
 
Inscription : janvier 2007
Messages : 3
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2007
Messages : 3
Points : 0
Points : 0
Par défaut meme erreur

avec ou sans guillemets c'est la même erreur...
gmandil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2007, 10h46   #4
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 451
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 51
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 451
Points : 7 564
Points : 7 564
Citation:
Envoyé par D[r]eadLock
À mon avis il faut des "" autour de ton \n
Beaucoup plus surement autour de ${last_char}...
__________________
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2007, 11h06   #5
Invité de passage
 
Inscription : janvier 2007
Messages : 3
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2007
Messages : 3
Points : 0
Points : 0
toujours pas....

j'ai modifié mon code de la sorte :

Code :
1
2
3
4
5
6
7
#!/bin/bash
#je recupere le dernier caractère du fichier par
last_char=`tail -c1 /mnt/DEDE/a_sauver.txt`
if [ $'\n' = "${last_char}" ]
then echo "egal"
else echo "pas egal"
fi
et je n'ai plus d'erreur, par contre dans tout les cas de figure le srcipt me renvoie "pas egal". quelqu'un comprends pourquoi ?

une idée : peut etre que mon "tail" recupere le caractère de fin de fichier ? dans ce cas comment récuperer le dernier caractère de la dernière ligne ?
gmandil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2007, 12h01   #6
Nouveau Membre du Club
 
Inscription : février 2007
Messages : 36
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 36
Points : 34
Points : 34
Par défaut L'artillerie lourde

Hello,

si le problème persiste, voici une solution qui utilise un dump pour extraire le dernier caractère du fichier sous une forme plus civilisée.

Code :
1
2
3
 
LAST=$(tail -c1 /mnt/DEDE/a_sauver.txt| od -c -An)
if [ $LAST = "\\n" ] ; then echo "Egal" ; else echo "Different" ; fi
Du coup il faut échapper le caractère d'échappement dans la comparaison, d'où le double backslash.

HTH

MarkH
MarkH est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h35.


 
 
 
 
Partenaires

Hébergement Web