[KSH => CSH] Adaptation de script

Adaptation de script [KSH => CSH] - Shell/Batch - Programmation

Marsh Posté le 07-09-2007 à 11:18:36    

Bonjour à tous,
 
Pour des raisons professionnelles, je dois adapter un script ksh en csh.
Le problème est que je maitrise très mal les 2 "langages", et le net est très pauvre en doc csh.
 
Je progresse au ligne par ligne, mais voilà qu'une m'embete particulièrement depuis plusieures heures :
 

Code :
  1. set rech=`cat $lst | egrep -v "^#|^\?" `


 
rech, une variable classique
$lst, le contenu d'un fichier
Je souhaiterai faire abstraction dans le fichier des lignes qui commencent par "#" (typiquement les commentaire) ou zéro ou une occurence de l'expression commencant par "\"
 
En ksh, tout fonctionne. En csh, bien sur ça plante!  
Le | a l'air de poser problème, mais je pense que le problème majeur vient des caractères spéciaux qui ne sont pas interprétés de la même façon en csh.
 
Merci d'avance si vous avez des idées à proposer  :jap:

Reply

Marsh Posté le 07-09-2007 à 11:18:36   

Reply

Marsh Posté le 07-09-2007 à 14:28:21    

Une centaine de tests + tard...  :pt1cable:  
 
Voilà qui est étrange... :
 

Code :
  1. set rech=`cat toto.csh | egrep -v "^#|^\?"|wc -l


 
En ajoutant le wc -l qui est censé me retourner le nombre de lignes concordant à ma condition, le retour est exact !
 
Ce qui veut dire que le problème vient du fait qu'il n'arrive pas à mettre mon script dans ma variable "rech"
 
Faut-il déclarer cette variable d'une certaine manière ?
La taille d'une variable est-elle restreinte coté CSH ?

Reply

Marsh Posté le 09-09-2007 à 13:23:06    

shanod a écrit :

Bonjour à tous,
 
Pour des raisons professionnelles, je dois adapter un script ksh en csh.


Pas de bol...
 

shanod a écrit :

Le problème est que je maitrise très mal les 2 "langages", et le net est très pauvre en doc csh.


Vi, je pense que le csh n'a jamais percé
 

shanod a écrit :

Je progresse au ligne par ligne, mais voilà qu'une m'embete particulièrement depuis plusieures heures :
 

Code :
  1. set rech=`cat $lst | egrep -v "^#|^\?" `


 
rech, une variable classique
$lst, le contenu d'un fichier


hum... si "$lst" est un contenu, alors ça ne va pas. Tu peux pas faire "cat <qqchose>". Tu peux faire "echo <qqchose>" ou bien "cat <nom de fichier>" mais en aucune façon tu peux faire "cat <contenu>" => le pgm "cat" interprètera ce "contenu" comme un nom de fichier !!!
 

shanod a écrit :

En ksh, tout fonctionne. En csh, bien sur ça plante!  
Le | a l'air de poser problème, mais je pense que le problème majeur vient des caractères spéciaux qui ne sont pas interprétés de la même façon en csh.


C'est pas le csh qui interprète tes caractères spéciaux, c'est le "egrep" (à condition qu'il les reçoive correctement). Ptet que le csh les transforme avant de les passer au egrep (et que les guillemets double qui sont une bonne protection ksh ne fonctionnent pas pareil en csh)
Malheureusement, je connais pas le csh...


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed