Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 31/08/2017, à 10:32

robotzeus

[résolu]probléme binaire attendue sur un fichier

Bonjour.
j'ai  testé un petit script pour affiché les fichier d'un répertoire mais j'ai eu une erreur lors de l'execution (j 'ai enlevé quelque ligne pour éviter que ca soit trop long)

ls| while read line; do
	if [ -f $line ]
	then
	echo $line
	fi
done
+ ls
+ read line
+ '[' -f Bureau ']'
.....
+ read line
+ '[' -f nligne ']'
+ echo nligne
nligne
...
+ read line
+ '[' -f Vidéos ']'
+ read line
+ '[' -f VirtualBox VMs ']'
/media/zeus/15A9-70DC/progtest/prog1: ligne 9 : [: VirtualBox : opérateur binaire attendu
+ read line

la commande LS renvois

Bureau     intlag.m     Musique  nligne.txt  Public           VirtualBox VMs
Documents  Modèles      nbligne  PDF         Téléchargements
Images     mozilla.pdf  nligne   progtest    Vidéos

il semble donc qu'il es un probleme avec le dossier VirtualBox VMs sans que je puisse savoir pourquoi.
Es-ce que quelqu'un a une idée du probleme et de la maniere de le resourdre pour plus que la ligne s'affiche ?

Dernière modification par robotzeus (Le 31/08/2017, à 10:55)

Hors ligne

#2 Le 31/08/2017, à 10:41

Hoper

Re : [résolu]probléme binaire attendue sur un fichier

EDIT : En fait tu peux laisser tomber ce que j'ai écris plus bas. D'après ton post, il prend bien l'espace, c'est juste que dans ton test tu ne protège pas ta chaîne de caractère, et que donc le "VM" est pris pour un argument du test. Met simplement des guillemets :

if [ -f $line ]  =>  if [ -f "$line" ]

Et ça devrait passer smile

-------------------------------------------------------------------------------------------
Le problème, c'est qu'il y a un espace dans le nom du répertoire.
Globalement si tu veux appliquer une opération sur une liste de fichier, essaye de faire autrement. Par exemple :

IFS='
'
for i in `ls -1`
do
    echo $i
done
unset IFS

Je commence par indiquer que le séparateur ce n'est plus un blanc (espace ou tabulation) mais un retour à la ligne. Puis je boucle sur la sortie de ls -1 (option qui affiche le résultat du ls ligne par ligne). Enfin je supprime le contenu de la variable d’environnement IFS pour qu'elle retrouve sa valeur par défaut.
--------------------------------------------------------------------------------------------

Dernière modification par Hoper (Le 31/08/2017, à 10:55)


Mes tutos et coups de gueule :
http://hoper.dnsalias.net/atdc/
Mastodon: @hoper@framapiaf.org

Hors ligne

#3 Le 31/08/2017, à 10:54

robotzeus

Re : [résolu]probléme binaire attendue sur un fichier

merci c'est parfait avec les guillemet

Hors ligne