[bash] divisé une variable en plusieur avec comme marqueur "/"

divisé une variable en plusieur avec comme marqueur "/" [bash] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 12-11-2005 à 16:51:08    

Bonjour :hello:  
 
Je ne sais pas si j'ai été clair dans le titre donc je vais m efforcer au mieu de letre ici!
 
J'ai une variable $var qui contient le chemin absolu d'un fichier
$var=/le/chemin/absolu/monfichier.ext
 
je voudrais mettre dans une autre variable
$MonRep=/le/chemin/absolu/
 
Je sais qu'il existe une fonction qui decortique comme je le souhaite les variable a partir des "/" mais je ne sais pas du tout laquelle que c'est; et notre tres cher ami Google n'a pas su m'aider, enfin petetre me suis je mal exprimé....
 
Enfin bref si quelqu un se rappelle du nom de cette fonction ou tout du moins un procede assez leger qui permetrai de faire pareil je suis preneur, car la je cherche et je seche surtout!!
Merci par avance

Reply

Marsh Posté le 12-11-2005 à 16:51:08   

Reply

Marsh Posté le 12-11-2005 à 17:04:52    

dirname + basename


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 12-11-2005 à 17:19:30    

pas mieux.  
Le compte est bon, e_esprit a gagné :)


---------------
&THEN :: t-shirts geek collectorZ:: fermeture pour noel ::  http://and.then.fr
Reply

Marsh Posté le 12-11-2005 à 17:45:14    

merki a vous c'est exactement ce que je cherchais  :jap:  
 
Du coup vous avez été super rapide et donné exactement ce que je cherchais merki a vous  :ange:  
 
Merki et a bientot pour des prochaines aventures  :bounce:  
 

Reply

Marsh Posté le 12-11-2005 à 17:49:14    

Code :
  1. ${parameter/pattern/string}
  2.        ${parameter//pattern/string}
  3.               The pattern is expanded to produce a pattern just as in pathname expansion.  Parameter is
  4.               expanded  and the longest match of pattern against its value is replaced with string.  In
  5.               the first form, only the first match is replaced.  The second form causes all matches  of
  6.               pattern  to  be  replaced  with  string.   If pattern begins with #, it must match at the
  7.               beginning of the expanded value of parameter.  If pattern begins with %, it must match at
  8.               the  end  of  the expanded value of parameter.  If string is null, matches of pattern are
  9.               deleted and the / following pattern may be omitted.  If parameter is @ or *, the  substi-
  10.               tution  operation  is  applied to each positional parameter in turn, and the expansion is
  11.               the resultant list.  If parameter is an array variable subscripted with @ or *, the  sub-
  12.               stitution  operation is applied to each member of the array in turn, and the expansion is
  13.               the resultant list.


 
un truc dans le genre (man bash ...)

Reply

Marsh Posté le 13-11-2005 à 17:00:08    

basename est dirname sont beaucoup plus adaptés. Et à la limite s'il ne veut pas de basename et dirname, ${parameter##word} et ${parameter%%word} sont eux-même beacoup plus adaptés que ${parameter//pattern/string}, qui en plus n'est pas sttandard et n'existe pas dans ksh, par exemple.

Reply

Sujets relatifs:

Leave a Replay

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