Je dois avouez que je ne comprends pas tres bien la question.
Les deux shifts serve a enlever '.' et '..'... Ils y sont toujours (sauf peut-etre sous certains (*) Unix lorsque $1 == /, quelqu'un peut essayer?). Ensuite il est possible que $1 vale "bbb\ aaa/*" donc pas necessairement un fichier ou un repertoire, d'ou le test.
(*): pas sous SunOS 5.8, BSD?
Aussi, il manque des '"' autour de ton $1 dans ton 'ls'
#!/bin/bash
[ -z "$1" -o \! -d "$1" ] &&
{ echo "Usage: repvide.sh nom-du-repertoire" >&2; exit 1; }
set -- "$1"/{.,}*; shift; shift; if [ -f "$1" -o -d "$1" ]; then
ls -lad "$1";
exit 1;
else
echo vide >&2;
exit 0;
fi
cool :) Ãa marche sur bsd avec bash, mais pas sur sh ;)
>bash repvide3.sh Usage: repvide.sh nom-du-repertoire >bash repvide3.sh bar vide >sh repvide3.sh bar shift: can't shift that many vide
DEMO: [richard@richard test]$ mkdir "il est vide" [richard@richard test]$ ./repvide.sh il\ est\ vide/ vide [richard@richard test]$ touch il\ est\ vide/ccc [richard@richard test]$ ./repvide.sh il\ est\ vide/ -rw-rw-r-- 1 richard richard 0 Mar 24 06:22 il est vide//ccc [richard@richard test]$ rm il\ est\ vide/ccc [richard@richard test]$ mkdir !$ mkdir il\ est\ vide/ccc [richard@richard test]$ ./repvide.sh il\ est\ vide/ drwxrwxr-x 2 richard richard 4096 Mar 24 06:22 il est vide//ccc [richard@richard test]$
On Tue, 2004-03-23 at 18:53, Marc St-Jacques wrote:
Le 23 Mar 2004 16:01:03 -0500 Richard Prescott <[email protected]> a Ãcrit:
Je ne pouvais resister :
Alors, lÃ, je m'avoue vaincu ... sur le principe ;-) mais cette fonction est trÃs dangereuse si on n'y fait pas attention.
CrÃons trois rÃpertoires bidons : aaa, bbb et bbb\ aaa. tous les rÃpertoires contiennent un fichier ccc
AprÃs le deuxiÃme shift, j'ai l'impression que $1pointe maintenant vers le *rÃpertoire* aaa et a donc son contenu dans la mire.
Si le contenu de repvide.sh serait seulement cette ligne: set -- "$1"/{.,}*; shift;shift;ls -la $1
voici ce que donnerais l'exÃcution avec pour paramÃtre bbb\ aaa :
machine:/home/public# sh repvide.sh bbb\ aaa -rw-r--r-- 1 root root 0 Mar 23 18:36 aaa/ccc
bbb: total 8 drwxr-xr-x 2 root root 4096 Mar 23 18:40 . drwxrwxrwx 6 root root 4096 Mar 23 18:40 .. -rw-r--r-- 1 root root 0 Mar 23 18:40 ccc
Ãtonnant, non ? Est-ce vraiment prudent ces shifts ?
--- Marc St-Jacques
Linux from scratch. http://www.linuxfromscratch.org
Your distro. Your rules.
-----BEGIN GEEK CODE BLOCK----- Version: 3.12 GCS !d s+:+ a+ C+++ UL++ P++ L+++ E--- W+ N+ w-- M- PS PE- Y+ PGP++ t+ X+ R tv b- DI D++ G e+++ h++ !r !y+ ------END GEEK CODE BLOCK------ ----
Attachment: signature.asc
Description: OpenPGP digital signature