Remplacement de chaine de caractère

Remplacement de chaine de caractère - Shell/Batch - Programmation

Marsh Posté le 30-04-2007 à 12:20:05    

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 ?

Reply

Marsh Posté le 30-04-2007 à 12:20:05   

Reply

Marsh Posté le 30-04-2007 à 15:38:34    

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
Reply

Marsh Posté le 30-04-2007 à 16:11:30    

Reply

Marsh Posté le 30-04-2007 à 16:20:53    

C'est quoi ca AIX ,

Reply

Marsh Posté le 30-04-2007 à 17:15:15    

un UNIX pour les machines IBM

Reply

Marsh Posté le 30-04-2007 à 17:50:52    

ok

Reply

Marsh Posté le 01-05-2007 à 09:14:27    

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'#')

Reply

Marsh Posté le 01-05-2007 à 09:15:41    

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

Reply

Marsh Posté le 01-05-2007 à 09:47:34    


 
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
 
$

Reply

Marsh Posté le 01-05-2007 à 12:46:41    

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

Reply

Marsh Posté le 01-05-2007 à 12:46:41   

Reply

Marsh Posté le 10-05-2007 à 16:46:00    

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
Reply

Sujets relatifs:

Leave a Replay

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