|
|
|
|
||||||
| fr.comp.os.unix Système UNIX. |
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
Salut, J'ai encore un problème de test d'existence de fichier quand celui-ci n'existe pas. (Pas de problème quand le fichier existe) L'exécution du script raconte ça: [: 53: /home/hugo/mail/mbox_du_jour: unexpected operator Les lignes en cause sont: 8<-----------8<---------8<----------8<----------8<----------8<----------8< 16 BOITE_MAIL_SOURCE=~/mail/mbox_du_jour 47 if [ ! -a ${BOITE_MAIL_SOURCE} ] 48 then 49 echo ${RED}" Pas de fichier "${CYAN}${BOITE_MAIL_SOURCE} 50 echo ${GREEN}" (Il n'y a pas eu de courrier reçu récemment)" 51 echo ${NORMAL} 52 exit 1 53 fi 8<-----------8<---------8<----------8<----------8<----------8<----------8< J'ai essayé avec ou sans accolades, $BOITE_MAIL_SOURCE ou ${BOITE_MAIL_SOURCE} et le problème est le même. Qu'est-ce que j'ai encore mal fait ?!?? Merci de votre aide. -- $ rm *>o $ ls o Hugo (né il y a 1 357 307 702 secondes) |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
Dans l'article <slrnf3alhj.h9b.hugolino@Deborah.Rock-n-Roll.org>,
Hugolino <hugolino@free.fr> écrit: > J'ai encore un problème de test d'existence de fichier quand celui-ci > n'existe pas. (Pas de problème quand le fichier existe) > L'exécution du script raconte ça: > [: 53: /home/hugo/mail/mbox_du_jour: unexpected operator > Les lignes en cause sont: > 8<-----------8<---------8<----------8<----------8<----------8<----------8< > 16 BOITE_MAIL_SOURCE=~/mail/mbox_du_jour > 47 if [ ! -a ${BOITE_MAIL_SOURCE} ] Le -a, c'est un "and", qui ne peut donc pas suivre un "!" (not). -- Vincent Lefèvre <vincent@vinc17.org> - Web: <http://www.vinc17.org/> 100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/> Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon) |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
2007-04-30, 02:47(+00), Vincent Lefevre:
> Dans l'article <slrnf3alhj.h9b.hugolino@Deborah.Rock-n-Roll.org>, > Hugolino <hugolino@free.fr> écrit: > >> J'ai encore un problème de test d'existence de fichier quand celui-ci >> n'existe pas. (Pas de problème quand le fichier existe) > >> L'exécution du script raconte ça: > >> [: 53: /home/hugo/mail/mbox_du_jour: unexpected operator > >> Les lignes en cause sont: >> 8<-----------8<---------8<----------8<----------8<----------8<----------8< >> 16 BOITE_MAIL_SOURCE=~/mail/mbox_du_jour > > >> 47 if [ ! -a ${BOITE_MAIL_SOURCE} ] > > Le -a, c'est un "and", qui ne peut donc pas suivre un "!" (not). Oui, quoique quand il n'y a pas ambiguité, c'est aussi un synonyme de "-e". Autrement dit, il y a deux -a: un unary et un binary. Seul le binary est standard. if [ ! -e "$BOITE_MAIL_SOURCE" ] if ! [ -e "$BOITE_MAIL_SOURCE" ] if ! ls -d -- "$BOITE_MAIL_SOURCE" > /dev/null qui est en fait equivalent a if ! [ -e "$BOITE_MAIL_SOURCE" ] || ! [ -L "$BOITE_MAIL_SOURCE" ] [ -e ... ] retournera false si ... est un lien symbolique vers un fichier qui n'existe pas. -- Stéphane |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
Dans l'article <slrnf3b2p9.4va.stephane.chazelas@spam.is.invalid> ,
Stephane Chazelas <cette.adresse@est.invalid> écrit: > Oui, quoique quand il n'y a pas ambiguité, c'est aussi un > synonyme de "-e". Autrement dit, il y a deux -a: un unary et un > binary. Seul le binary est standard. Bizarre, la page man ("man [") n'indique pas la forme unary: -- Vincent Lefèvre <vincent@vinc17.org> - Web: <http://www.vinc17.org/> 100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/> Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon) |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
Vincent Lefevre wrote in message
<20070430110956$2b90@prunille.vinc17.org>: > Bizarre, la page man ("man [") n'indique pas la forme unary: La page de man de bash ([ est un builtin de bash) en parle. |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
Dans l'article <4635d125$0$641$426a34cc@news.free.fr>,
Nicolas George <nicolas$george@salle-s.org> écrit: > Vincent Lefevre wrote in message > <20070430110956$2b90@prunille.vinc17.org>: > > Bizarre, la page man ("man [") n'indique pas la forme unary: > La page de man de bash ([ est un builtin de bash) en parle. Effectivement. Mais à noter que le -a unaire n'est pas portable. Et sous zsh, bien que [ soit builtin, le -a unaire ne fonctionne qu'avec la construction [[. -- Vincent Lefèvre <vincent@vinc17.org> - Web: <http://www.vinc17.org/> 100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/> Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon) |
|
|
|
#7 |
|
Messages: n/a
Hébergeur: |
2007-04-30, 11:37(+00), Vincent Lefevre:
> Dans l'article <4635d125$0$641$426a34cc@news.free.fr>, > Nicolas George <nicolas$george@salle-s.org> écrit: > >> Vincent Lefevre wrote in message >> <20070430110956$2b90@prunille.vinc17.org>: >> > Bizarre, la page man ("man [") n'indique pas la forme unary: > >> La page de man de bash ([ est un builtin de bash) en parle. > > Effectivement. Mais à noter que le -a unaire n'est pas portable. Et > sous zsh, bien que [ soit builtin, le -a unaire ne fonctionne qu'avec > la construction [[. En l'occurrence, je pense qu'il s'agit d'un bug. D'apres la doc de zsh [ -a file ] devrait marcher. Ni -e ni -a n'existait dans le Bourne shell. Je pense que [ -a est apparu en premier dans ksh. Je ne sais pas comment -e est apparu mais c'est celui qui a ete choisi par POSIX. -e est pour "exists", c'est un peu misleading dans la mesure ou un fichier peut exister et ce test renvoyer false. En fait, il teste si on peut faire un stat(2) (pas lstat(2)) avec success sur le fichier. D'ou -a...ccessible je suppose. -- Stéphane |
|
|
|
#8 |
|
Messages: n/a
Hébergeur: |
Dans l'article <4635d125$0$641$426a34cc@news.free.fr>,
Nicolas George <nicolas$george@salle-s.org> écrit: > Vincent Lefevre wrote in message > <20070430110956$2b90@prunille.vinc17.org>: > > Bizarre, la page man ("man [") n'indique pas la forme unary: > La page de man de bash ([ est un builtin de bash) en parle. Le -a ne semble pas fonctionner avec [ et ! sous bash: vlefevre@vin:~$ touch exists vlefevre@vin:~$ [ ! -e exists ] || echo found found vlefevre@vin:~$ [ ! -a exists ] || echo found vlefevre@vin:~$ En revanche, on a bien: vlefevre@vin:~$ [[ ! -e exists ]] || echo found found vlefevre@vin:~$ [[ ! -a exists ]] || echo found found vlefevre@vin:~$ et vlefevre@vin:~$ [ -e exists ] && echo found found vlefevre@vin:~$ [ -a exists ] && echo found found vlefevre@vin:~$ C'est la version 3.1 (paquet Debian bash 3.1dfsg-8). Je viens de faire un rapport de bug sur le BTS de Debian. -- Vincent Lefèvre <vincent@vinc17.org> - Web: <http://www.vinc17.org/> 100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/> Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon) |
|
![]() |
| Outils de la discussion | |
|
|