Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Variable bash

8 réponses
Avatar
Bertrand Prémaillon
Bonjour,

J'ai un problème mais heureusement vous êtes là :)

J'ai une variable qui contient un ensemble de chemin à partir de mon
home, ce sont donc des chemins relatifs. Par exemple :

FILES="mes_telechargement/ mes_binaires/ mes_photos/"

J'aimerais modifier FILES pour me retrouver avec des chemins absolus.
Mais si je fais :

FILES_BIS="$HOME/$FILES" j'obtiens "/home/bertrand/mes_telechargement
mes_binaires mes_photos/" alors que j'aimerais évidemment :

"/home/bertrand/mes_telechargement /home/bertrand/mes_photos ..."

J'aimerais ne pas utiliser le ~/. Vous avez une idée (simple) ?

Merci d'avance






___________________________________________________________________________
Faites de Yahoo! votre page d'accueil sur le web pour retrouver directement vos services préférés : vérifiez vos nouveaux mails, lancez vos recherches et suivez l'actualité en temps réel.
Rendez-vous sur http://fr.yahoo.com/set


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org

8 réponses

Avatar
Jacques L'helgoualc'h
Bertrand Prémaillon a écrit, mardi 16 mai 2006, à 12:14 :
Bonjour,



bonjour,

J'ai un problème mais heureusement vous êtes là :)

J'ai une variable qui contient un ensemble de chemin à partir de mon
home, ce sont donc des chemins relatifs. Par exemple :

FILES="mes_telechargement/ mes_binaires/ mes_photos/"
[...]

"/home/bertrand/mes_telechargement /home/bertrand/mes_photos ..."



FULL=$(echo "$FILES" | sed -e "s,mes_,$HOME/&,g")

ou plus simple mais moins flexible,

FULL="${FILES//mes_/$HOME/mes_}"

--
Jacques L'helgoualc'h


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Bertrand Prémaillon
Jacques L'helgoualc'h a écrit :
Bertrand Prémaillon a écrit, mardi 16 mai 2006, à 12:14 :
Bonjour,



bonjour,

J'ai un problème mais heureusement vous êtes là :)

J'ai une variable qui contient un ensemble de chemin à partir de mon
home, ce sont donc des chemins relatifs. Par exemple :

FILES="mes_telechargement/ mes_binaires/ mes_photos/"
[...]

"/home/bertrand/mes_telechargement /home/bertrand/mes_photos ..."



FULL=$(echo "$FILES" | sed -e "s,mes_,$HOME/&,g")

ou plus simple mais moins flexible,

FULL="${FILES//mes_/$HOME/mes_}"




Et s'il n'y a pas le marqueur "mes_" devant ?





___________________________________________________________________________
Faites de Yahoo! votre page d'accueil sur le web pour retrouver directement vos services préférés : vérifiez vos nouveaux mails, lancez vos recherches et suivez l'actualité en temps réel.
Rendez-vous sur http://fr.yahoo.com/set


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Jacques L'helgoualc'h
Bertrand Prémaillon a écrit, mardi 16 mai 2006, à 12:47 :
Jacques L'helgoualc'h a écrit :


[...]
>FULL=$(echo "$FILES" | sed -e "s,mes_,$HOME/&,g")
>
>ou plus simple mais moins flexible,
>
>FULL="${FILES//mes_/$HOME/mes_}"
>

Et s'il n'y a pas le marqueur "mes_" devant ?



FULL="$(echo "$FILES" | sed -re "s,(^|[[:blank:]]+),&$HOME/,g")"

--
Jacques L'helgoualc'h


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Sylvain Sauvage
mardi 16 mai 2006, 12:47:37 CEST, Bertrand Prémaillon a écrit :

Jacques L'helgoualc'h a écrit :
> Bertrand Prémaillon a écrit, mardi 16 mai 2006, à 12:14 :
>> Bonjour,
>
> bonjour,
>
>> J'ai un problème mais heureusement vous êtes là :)
>>
>> J'ai une variable qui contient un ensemble de chemin à partir de mon
>> home, ce sont donc des chemins relatifs. Par exemple :
>>
>> FILES="mes_telechargement/ mes_binaires/ mes_photos/"
>> [...]
>>
>> "/home/bertrand/mes_telechargement /home/bertrand/mes_photos ..."
>
> FULL=$(echo "$FILES" | sed -e "s,mes_,$HOME/&,g")
>
> ou plus simple mais moins flexible,
>
> FULL="${FILES//mes_/$HOME/mes_}"
>

Et s'il n'y a pas le marqueur "mes_" devant ?



FULL="`for f in $FILES; do echo $HOME/$f; done`"

Le for casse $FILES suivant les espaces (= split).
Les guillemets ressoudent les chaînes construites par echo (= join).

--
Sylvain Sauvage


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Joel
S'il est possible de modifier FILES pour le mettre sous le format suivant :
$> echo $FILES
mes_telechargement/,mes_binaires/,mes_photos/

Il est alors posssible de définir FULL de cette maniere :
$> export FULL=$HOME/{$FILES}

On aura donc :
$> echo $FULL
/home/bertrand/{mes_telechargement/,mes_binaires/,mes_photos/}

Ce qui donne, avec un ls par exemple :
$> ls $FULL
/home/bertrand/mes_telechargement:
. ..

/home/bertrand/mes_binaires:
. ..

/home/bertrand/mes_photos:
. ..


Après, tout dépend de l'utilisation qui sera faite de $FULL...
Un man bash, en particulier la partie Expansion (en Anglais) apportera
de plus amples précisions.

Le 16/05/06, Jacques L'helgoualc'h<lhh+ a écrit :
Bertrand Prémaillon a écrit, mardi 16 mai 2006, à 12:14 :
> Bonjour,

bonjour,

> J'ai un problème mais heureusement vous êtes là :)
>
> J'ai une variable qui contient un ensemble de chemin à partir de mon
> home, ce sont donc des chemins relatifs. Par exemple :
>
> FILES="mes_telechargement/ mes_binaires/ mes_photos/"
> [...]
>
> "/home/bertrand/mes_telechargement /home/bertrand/mes_photos ..."

FULL=$(echo "$FILES" | sed -e "s,mes_,$HOME/&,g")

ou plus simple mais moins flexible,

FULL="${FILES//mes_/$HOME/mes_}"

--
Jacques L'helgoualc'h


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact .org




Avatar
Bertrand Prémaillon
Jacques L'helgoualc'h a écrit :
Bertrand Prémaillon a écrit, mardi 16 mai 2006, à 12:47 :
Jacques L'helgoualc'h a écrit :


[...]
FULL=$(echo "$FILES" | sed -e "s,mes_,$HOME/&,g")

ou plus simple mais moins flexible,

FULL="${FILES//mes_/$HOME/mes_}"



Et s'il n'y a pas le marqueur "mes_" devant ?



FULL="$(echo "$FILES" | sed -re "s,(^|[[:blank:]]+),&$HOME/,g")"




Terriblement efficace. Merci





___________________________________________________________________________
Faites de Yahoo! votre page d'accueil sur le web pour retrouver directement vos services préférés : vérifiez vos nouveaux mails, lancez vos recherches et suivez l'actualité en temps réel.
Rendez-vous sur http://fr.yahoo.com/set


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Bertrand Prémaillon
Ebling Andreas a écrit :
Quoting Bertrand Prémaillon :

Bonjour,



Bonjour,

J'ai un problème mais heureusement vous êtes là :)

J'ai une variable qui contient un ensemble de chemin à partir de mon
home, ce sont donc des chemins relatifs. Par exemple :

FILES="mes_telechargement/ mes_binaires/ mes_photos/"

J'aimerais modifier FILES pour me retrouver avec des chemins absolus.
Mais si je fais :

FILES_BIS="$HOME/$FILES" j'obtiens "/home/bertrand/mes_telechargement
mes_binaires mes_photos/"


L'erreur classique :). Il fait une concaténation de deux chaines.

alors que j'aimerais évidemment :
"/home/bertrand/mes_telechargement /home/bertrand/mes_photos ..."


Il faut faire une boucle qui découpe la variable $FILES en morceaux par rapport
aux espaces (équivalent à explode (" ", $FILES) en PHP), et qui pour chaque
morceau effectue la concaténation.

J'aimerais ne pas utiliser le ~/. Vous avez une idée (simple) ?

Merci d'avance


Désolé, je n'ai plus le code en tete pour effectuer la boucle de découpe

Bling

--
Qui vit voit loin, qui voyage voit d'avantage.

Mon "blog" : http://ebling.free.fr/stage/




Oui, j'avais pensé à une boucle avec une sorte de tokenizer comme en
java, mais je trouvais ça bien compliqué pour si peu de choses.





___________________________________________________________________________
Faites de Yahoo! votre page d'accueil sur le web pour retrouver directement vos services préférés : vérifiez vos nouveaux mails, lancez vos recherches et suivez l'actualité en temps réel.
Rendez-vous sur http://fr.yahoo.com/set


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Ebling Andreas
Quoting Bertrand Prémaillon :

Bonjour,



Bonjour,

J'ai un problème mais heureusement vous êtes là :)

J'ai une variable qui contient un ensemble de chemin à partir de mon
home, ce sont donc des chemins relatifs. Par exemple :

FILES="mes_telechargement/ mes_binaires/ mes_photos/"

J'aimerais modifier FILES pour me retrouver avec des chemins absolus.
Mais si je fais :

FILES_BIS="$HOME/$FILES" j'obtiens "/home/bertrand/mes_telechargement
mes_binaires mes_photos/"


L'erreur classique :). Il fait une concaténation de deux chaines.

alors que j'aimerais évidemment :
"/home/bertrand/mes_telechargement /home/bertrand/mes_photos ..."


Il faut faire une boucle qui découpe la variable $FILES en morceaux par rapport
aux espaces (équivalent à explode (" ", $FILES) en PHP), et qui pour chaque
morceau effectue la concaténation.


J'aimerais ne pas utiliser le ~/. Vous avez une idée (simple) ?

Merci d'avance


Désolé, je n'ai plus le code en tete pour effectuer la boucle de découpe

Bling

--
Qui vit voit loin, qui voyage voit d'avantage.

Mon "blog" : http://ebling.free.fr/stage/


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact