traduire un script BASH en KSH (pb avec sed)

traduire un script BASH en KSH (pb avec sed) - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 20-02-2008 à 18:09:13    

Bonjour à tous,  
 
j'ai un script BASH qui fonctionne très bien sous redhat, avec bash.
Je dois maintenant faire tourner mon script sur un Solaris 8 (secure) qui ne dispose que de sh et ksh.
 
Script BASH:
 
 

Code :
  1. #!/bin/bash
  2. dat=`date`
  3. nomfic=`date | sed -e 's/^\w{3\}\s\(\w\{3\}\)\s\(\s\|[0-9]\)\([0-9]\).*/\1\2\3/' -e 's/^\(w\{3\}\)\s\([0-9]\)/\10\2'`
  4. echo "Date complete: $dat" >>/home/mat/$nomfic.txt


 
 
Pour la version KSH, j'ai changé l'interpréteur, en mettant:

Code :
  1. #!/usr/bin/ksh


 
J'ai vérifié que les chemins soient correctes et lors de l'interprétation du script, le sed ne fonctionne pas:

Code :
  1. sed: command garbled: s/^\(w\{3\}\)\s\([0-9]\)/\10\2


 
J'ai cherché pas mal de temps sur les différences entre les shell, sur sed ... mais je ne trouve pas comment contourner le probleme.

Reply

Marsh Posté le 20-02-2008 à 18:09:13   

Reply

Marsh Posté le 20-02-2008 à 19:16:27    

c'est peut-être pas le shell mais plutôt la version de sed le problème non ?


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Marsh Posté le 21-02-2008 à 10:38:52    

sed ce n'est pas la bonne solution, déjà parce que la sortie de la commande "date" peux varier selon la locale et le système. Te ferais mieux d'utiliser les formats de la commande date pour récupérer directement la chaine dont tu as besoind (date '+%...').

Reply

Marsh Posté le 25-02-2008 à 09:41:26    

Salut,
 
Vous avez tous les deux apporté une partie de la solution, un grand merci à vous.
 
Pour la version de sed:
 
 sed, sous solaris, ne gère pas certains caractères spéciaux comme bash le fait:
 pour simplifier un '[0-9]' dans une regex, on remplace par '\d', pour simplifier un '[a-zA-Z]', c'est \w, un espace \s ...
 sous solaris, les \w \d ou \s par exemple ne sont pas compris par le moteur de sed, il faut dont garder la notation classique ..
 
Pour la date:  
 
 c'est vrai qu'il est beaucoup plus malin d'utiliser les options de la commande unix:

Code :
  1. $ dat=`date '+%b:%d:%a:%H:%M'`
  2. $ echo $dat
  3. Feb:25:Mon:09:36


 
@++
   
 

Reply

Sujets relatifs:

Leave a Replay

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