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

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Remplacement de chaine de caractère

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Remplacement de chaine de caractère

n°1551395
sylvainlel​eu
Posté le 30-04-2007 à 12:20:05  profilanswer
 

Dans un script batch j'ai trois chaines :
REP1=/home/toto/tmp/france
CH1=/home/toto/
CH2=/user/titi/
Je désire remplacer CH1 par CH2 dans REP1.
 
J'ai fait le script suivant :
 
REP1=/home/toto/tmp/france
CH1=/home/toto/
CH2=/user/titi/
 
T=`echo $REP1 |sed -e 's#$CH1#$CH2#'`
 
mais il n'interprete pas $CH1 et $CH2
une idée ?

mood
Publicité
Posté le 30-04-2007 à 12:20:05  profilanswer
 

n°1551529
webding
Posté le 30-04-2007 à 15:38:34  profilanswer
 

Tu parle d'un batch windows ou d"un bash linux ?
Par ce que si c'est un batch windows (par ce que tu a écri batch et pas bash) les variablé s'utilise comme ca: %CH2%


Message édité par webding le 30-04-2007 à 15:40:49
n°1551542
sylvainlel​eu
Posté le 30-04-2007 à 16:11:30  profilanswer
 
n°1551546
webding
Posté le 30-04-2007 à 16:20:53  profilanswer
 

C'est quoi ca AIX ,

n°1551571
sylvainlel​eu
Posté le 30-04-2007 à 17:15:15  profilanswer
 

un UNIX pour les machines IBM

n°1551579
webding
Posté le 30-04-2007 à 17:50:52  profilanswer
 

ok

n°1551729
matafan
Posté le 01-05-2007 à 09:14:27  profilanswer
 

C'est le même genre de problème que dans ton autre question : tes variables d'environnement ne sont pas connues à l'intérieur de sed. Remplace tes ' par des ", ou bien si tu préfère, ferme le ' avant le nom de variable et ré-ouvre le après (sed -e 's#'$CH1'#'$CH2'#')

n°1551731
matafan
Posté le 01-05-2007 à 09:15:41  profilanswer
 

Le "Batch AIX" c'est ksh, je suppose ?

n°1551736
Elmoricq
Modérateur
Posté le 01-05-2007 à 09:47:34  profilanswer
 


 
Ca ne veut rien dire. Tu peux être en bourne shell, en korn shell, en bourne again shell, en c-shell, en z shell, etc.
 
Et pour le reste, matafan a répondu à la question (s'il passe avant moi sur tous les topics je vais m'ennuyer aujourd'hui [:benou]) : les apostrophes indiquent au shell qu'il ne doit pas évaluer le contenu de la chaîne, alors qu'avec les guillemets il effectue les interpolations demandées.
 
Exemple (en ksh) :

$ blabla="tu peux pas taiste"
 
$ echo '$blabla'
$blabla
 
$ echo "$blabla"
tu peux pas taiste
 
$

n°1551796
matafan
Posté le 01-05-2007 à 12:46:41  profilanswer
 

Faut s'lever plus tôt m'sieur Elmoricq :D

mood
Publicité
Posté le 01-05-2007 à 12:46:41  profilanswer
 

n°1558232
Apone0
Posté le 10-05-2007 à 16:46:00  profilanswer
 

il me semble que :
 
echo $REP1 |sed -e "s#$CH1#$CH2#"
 
fonctionne bien...  
 
 
 [edit] oups, 2 trains de retard, DSL  :jap:


Message édité par Apone0 le 10-05-2007 à 16:47:54

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Remplacement de chaine de caractère

 

Sujets relatifs
Remplacement/suppression d'un chaine de caractère dans un fichier[résolu] Probleme pour connaitre la taille d'une chaine de caracteres
Saisie automatique d'un caractère[php] Remplace tout les \n entre "" dans une chaine
chaine caractèresComparaison de Chaine de caractères, déplacement DOM
[C] recv: des = pour couper les lignes trop longues :/ 
Plus de sujets relatifs à : Remplacement de chaine de caractère


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