Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1655 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  traduire un script BASH en KSH (pb avec sed)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

traduire un script BASH en KSH (pb avec sed)

n°1013163
marcello_m​at
Posté le 20-02-2008 à 18:09:13  profilanswer
 

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.

mood
Publicité
Posté le 20-02-2008 à 18:09:13  profilanswer
 

n°1013191
Mjules
Modérateur
Parle dans le vide
Posté le 20-02-2008 à 19:16:27  profilanswer
 

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.
n°1013317
matafan
Posté le 21-02-2008 à 10:38:52  profilanswer
 

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 '+%...').

n°1014715
marcello_m​at
Posté le 25-02-2008 à 09:41:26  profilanswer
 

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


 
@++
   
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  traduire un script BASH en KSH (pb avec sed)

 

Sujets relatifs
script shell qui renome des repertoire.BASH Passage de paramètre contenant des espaces
script shell pour compilation latexscript de connexion
[rech] PHP script webmail multi-emailsscript de connexion
lancer un script bash qui tourne en boucle au demarrage[Pas résolu !] Problème de script Bash dans script Perl
Plus de sujets relatifs à : traduire un script BASH en KSH (pb avec sed)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR