Tester si un répertoire est vide

Le
Daniel Déchelotte
Bonjour,

C'est tout bête, j'aimerais éviter l'erreur que peux provoquer :

for i in /sys/class/scsi_disk/*; do
# manipule $i
# peut provoquer un
# /sys/class/scsi_disk/*/device/model: No such file or directory
# si /sys/class/scsi_disk/ est vide
done

La seule façon de faire est de tester explicitement si "$i" vaut
"/sys/class/scsi_disk/*" ?

--
Daniel Déchelotte
http://yo.dan.free.fr/
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Stephane Chazelas
Le #121739
On Thu, 13 Dec 2007 14:45:38 +0100, Daniel Déchelotte wrote:
Bonjour,

C'est tout bête, j'aimerais éviter l'erreur que peux provoquer :

for i in /sys/class/scsi_disk/*; do
# manipule $i
# peut provoquer un
# /sys/class/scsi_disk/*/device/model: No such file or directory
# si /sys/class/scsi_disk/ est vide
done

La seule façon de faire est de tester explicitement si "$i" vaut
"/sys/class/scsi_disk/*" ?
[...]


C'est chiant hein?

Ya pas de solution standard. Mais chaque shell a son extension
pour ca.

En zsh

for i in .../*(N); do

En bash, ya un shopt qui va bien.

Sinon, si des fois tu as besoin que ce soient des fichiers
reguliers, ou alors qu'ils soient lisibles, tu peux ajouter un
test qui reglera aussi ca:

for i in *; do
[ -f "$i" ] && [ ! -L "$i" ] || continue
...
done

for i in *; do
[ -r "$i" ] || continue
...
done

[ "$i" = "*" ] || continue
n'est pas un test correcte, car il peut tres bien exister un
fichier qui s'appelle "*". Ce qu'on fait alors, c'est:

set -- [*] *
case $1$2 in
('[*]*') : la liste est vide;;
(*) shift
for i do
...
done;;
esac

--
Stephane

Nicolas George
Le #121738
Stephane Chazelas wrote in message
for i in /sys/class/scsi_disk/*; do
Ya pas de solution standard.



Euh, si : tester si $i existe.


Stephane Chazelas
Le #121611
On 13 Dec 2007 18:57:32 GMT, Nicolas George wrote:
Stephane Chazelas wrote in message
for i in /sys/class/scsi_disk/*; do
Ya pas de solution standard.



Euh, si : tester si $i existe.


Oui et non.

Dans le resultat de .../*, tu peux avoir des fichiers qui
n'existent pas et des fichiers dont tu ne peux pas verifier
l'existence.

--
Stephane



Publicité
Poster une réponse
Anonyme