Précédent   Forum des professionnels en informatique > Systèmes > Linux > Système
Système Vos questions autour de l'administration système
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/12/2011, 14h51   #1
Invité régulier
 
Inscription : novembre 2011
Messages : 33
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 33
Points : 9
Points : 9
Par défaut [shell] références dans les variables

Bonjour à tous,

je suis en train d'écrire un script et dedans je dois connaitre le type d'encodage d'un fichier dont le nom est contenu dans la variable $filename

j'ai besoin de définir deux variables:

la première détermine le type mime du fichier:

Code :
file_type=`file -i $filename`
Code :
1
2
3
echo $file_type
 
./nom_fichier.ksh: application/x-shellscript
j'ai également besoin de savoir si le type contient la string "charset"


Code :
1
2
 
codage=`$file_type | grep charset`
et là j'ai une erreur

Code :
1
2
 
/home/bin/recode_bis.ksh: line 36: ./nom_fichier.ksh:: not found
qui vient (je crois) du fait que lorsqu'il essaye de remplir la variable codage, iltente d'exécuter nom_fichier (à cause du ./ devant le nom?) alors que moi j'aimerais juste qu'il interprete $file_type comme un string et non comme une commande.

j'ai trouvé un expédient pour contourner le problème, mais j'aimerais bien comprendre ce qui se passe et comment faire pour que ça fonctionne.

merci
tiresias54 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2011, 15h10   #2
Membre actif
 
Homme
Inscription : avril 2004
Messages : 91
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2004
Messages : 91
Points : 154
Points : 154
nope, en fait il fait ce que tu lui demande, à savoir :
Code :
`$file_type | grep charset`
soit
Code :
./nom_fichier.ksh: application/x-shellscript | grep charset
ce que tu veux faire serait plutot
Code :
`echo $file_type | grep charset`
qui soit dit en passant ne retournera rien, vu que le charset n'est pas présent sur le retour de ta commande file.
__________________
First, they ignore you. Then, they laught at you.Then, they fight you. Then, you win.

Mohandas Gandhi
dokho est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2011, 15h29   #3
Invité régulier
 
Inscription : novembre 2011
Messages : 33
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 33
Points : 9
Points : 9
impec merci

Citation:
Envoyé par dokho Voir le message
qui soit dit en passant ne retournera rien, vu que le charset n'est pas présent sur le retour de ta commande file.
justement c'est que je veux (après je teste si il y a charset je détermine l'encodage d'origine pour l'entrer dans iconv, et si y'a pas charset je ne fait rien)
tiresias54 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2011, 17h51   #4
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 072
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 072
Points : 4 155
Points : 4 155
Bonjour,

grep n'est pas la commande appropriée pour tester ce que contient une variable; préfère expr.
ou, si c'est disponible dans la version de ksh que tu utilises :
Code :
if [[ $variable == *recherche* ]]; then
ou avec une expression rationnelle, par exemple :
Code :
1
2
regex="regex quelconque"
if [[ $variable =~ $regex ]]; then
N_BaH 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 05h51.


 
 
 
 
Partenaires

Hébergement Web