Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Tester si un répertoire est vide

3 réponses
Avatar
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/

3 réponses

Avatar
Stephane Chazelas
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

Avatar
Nicolas George
Stephane Chazelas wrote in message
<47617066$0$864$:
for i in /sys/class/scsi_disk/*; do
Ya pas de solution standard.



Euh, si : tester si $i existe.


Avatar
Stephane Chazelas
On 13 Dec 2007 18:57:32 GMT, Nicolas George wrote:
Stephane Chazelas wrote in message
<47617066$0$864$:
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