[Précédent (date)] [Suivant (date)] [Précédent (sujet)] [Suivant (sujet)] [Index par date] [Index par sujet]
Re: Répertoire vide
- To: "" <>
- Subject: Re: Répertoire vide
- From: Richard Prescott <>
- Date: 24 Mar 2004 07:21:29 -0500
-
In-reply-to: <[email protected]>
Si ca ne marche pas avec sh, c'est que "$1"/{,.}* n'est pas interpretÃ.
Voici une version qui devrait etre ok avec tous les shells POSIX.2:
#!/bin/bash
[ -z "$1" -o \! -d "$1" ] &&
{ echo "Usage: repvide.sh nom-du-repertoire" >&2; exit 1; }
set -- "$1"/.* "$1"/*; shift; shift;
[ ! -f "$1" -o -d "$1" ]
On Wed, 2004-03-24 at 06:59, Etienne Robillard wrote:
> Richard Prescott wrote:
> > 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------
> >>----
> >>
>
> ----
>
> --
> Liste de diffusion aide
> http://linux-quebec.org/mailman/listinfo/aide