Problème de compréhension avec un ligne de shell

Problème de compréhension avec un ligne de shell - Shell/Batch - Programmation

Marsh Posté le 15-01-2007 à 14:53:52    

Avant toute chose bonjour à tous !
 
Alors voila mon problème:  
J'ai un devoir dans lequel il y a une serie d'instructions Shell. Jusque là tout va bien!
Mais je butte sur une ligne en particulier :
 

Citation :

source=`echo $1 | sed 's/\//\\\\\//g'`; shift


 
Voila je me demandais d'une part:
-Est ce que source est une variable?
-Mais surtout qu'est ce que veut bien dire sed 's/\//\\\\\//g'` ?
Je sais que les antislashs servent à distinguer un caractère spécifique au Shell, mais du coup je n'arrive pas bien à saisir le sens de cette instruction sed...
 
Merci d'avance pour votre aide !  :)  

Reply

Marsh Posté le 15-01-2007 à 14:53:52   

Reply

Marsh Posté le 15-01-2007 à 16:06:25    

Citation :

-Est ce que source est une variable?


ça en a tout l'air :)
 

Citation :

-Mais surtout qu'est ce que veut bien dire sed 's/\//\\\\\//g'` ?


Un peu de googling ne fait pas de mal :)  
 
En substance c'est un remplacement, et la succession de slashes te définit ce qui change (pas envie de la décortiquer hehe)

Reply

Marsh Posté le 19-01-2007 à 19:03:38    

btvteam a écrit :

Citation :

source=`echo $1 | sed 's/\//\\\\\//g'`


 
Voila je me demandais d'une part:
-Est ce que source est une variable?


Syntaxe de création/affectation d'une variable shell: nom=valeur
Cela correspond à la syntaxe donc oui
 

btvteam a écrit :

-Mais surtout qu'est ce que veut bien dire sed 's/\//\\\\\//g'` ?


man sed !!!
 

btvteam a écrit :

Je sais que les antislashs servent à distinguer un caractère spécifique au Shell, mais du coup je n'arrive pas bien à saisir le sens de cette instruction sed...


 
Ben ça se décortique !!!

  • Première chaîne (celle qui est après le premier "/" et avant le 2° "/" non protégé): \/. Le "slash" est protégé par le "backslash" donc il est traité comme caractère normal donc ça va prendre chaque "/" de ton $1
  • Deuxième chaîne (celle qui est après le 2° "/" et avant le "/g" ): \\\\\/

Il y a 2 groupes de "\\" et un groupe de "\/". Chaque "backslash" permet de rendre le suivant "caractère normal". Au final ça remplacera chaque "slash" de "$1" par "backslash bachslash slash". Rien de bien compliqué...
 
T'as un très bon tuto de shell ici http://fr.lang.free.fr/cours/Shell_v1.4.pdf qui explique bien le mécanisme de protection au chapitre VI...


Message édité par Sve@r le 19-01-2007 à 19:06:54

---------------
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