audioscavenger a écrit :
Comment maintenant en PDKSH on fait pour lire ligne à ligne un fichier et faire des traitements readant les colonnes ?
|
Heu, en utilisant des redirections plutôt que des "cat pipe" qui servent à rien ?
Quand je vois la tronche des scripts que je dois maintenir au boulot, je pense que les auteurs (partis y a longtemps) sont au moins aussi fautifs que les bugs de l'outil ...
Cette syntaxe fonctionne très bien en KSH sous RHEL5:
Code :
- while read colonneA colonneB colonneC; do
- blablabla
- done < fichier.entree
|
Quand au "commande | read", personnellement j'utilise plutôt un set et les "positional parameters" (pas trouvé la traduction en français).
Code :
- set $( command )
- echo "Colonne 1: $1"
|
J'utilise RHEL4 et RHEL5 au boulot, je me coltine du KSH (héritage d'applis historiquement sous Solaris, moi je préfère le bash, qui est le shell par défaut de toutes façons).
Cependant, je viens de tester d'installer PDKSH sur ma VM RHEL 5.5 à la maison.
Code :
- $ pdksh --login
- $ echo TUTU | read variable
- $ echo $variable
- (pas de réponse)
|
Je confirme ça ne fonctionne pas.
Code :
- $ cat /etc/fstab | while read ligne; do echo $ligne; done
- LABEL=/ / ext3 defaults 1 1
- tmpfs /dev/shm tmpfs defaults 0 0
- devpts /dev/pts devpts gid=5,mode=620 0 0
- sysfs /sys sysfs defaults 0 0
- proc /proc proc defaults 0 0
- LABEL=SWAP-sda2 swap swap defaults 0 0
|
Sur la boucle, je n'ai pas le problème que tu décris. Tu utilises quelle version toi ?
Pour info;
Code :
- $ rpm -qi pdksh
- Name : pdksh Relocations: (not relocatable)
- Version : 5.2.14 Vendor: CentOS
- Release : 36.el5 Build Date: jeu 03 sep 2009 22:40:30 CEST
- Install Date: mar 12 oct 2010 20:25:48 CEST Build Host: builder10.centos.org
- Group : System Environment/Shells Source RPM: pdksh-5.2.14-36.el5.src.rpm
- Size : 386930 License: Public Domain
- Signature : DSA/SHA1, jeu 01 oct 2009 02:42:20 CEST, Key ID a8a447dce8562897
- URL : http://www.cs.mun.ca/~michael/pdksh/
- Summary : A public domain shell implementing ksh-88
- Description :
- The pdksh package contains public domain implementation of ksh-88.
- The ksh shell is a command interpreter intended for both interactive
- and shell script use. Ksh's command language is a superset of the sh
- shell language.
- Pdksh is unmaintained since 1998 and is obsoleted by ksh package.
|
Message édité par [Albator] le 12-10-2010 à 20:28:51