# Attribuer le nom des sous dossiers comme valeur de variable

**URL:** <https://www.debian-fr.org/t/attribuer-le-nom-des-sous-dossiers-comme-valeur-de-variable/61313>\
**Category:** Programmation\
**Created:** [Février 21, 2016, 7:56 UTC](https://www.debian-fr.org/t/attribuer-le-nom-des-sous-dossiers-comme-valeur-de-variable/61313 "2016-02-21T19:56:51Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Maxdeconde](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/4491bb/32.png) [@Maxdeconde](https://www.debian-fr.org/u/Maxdeconde)\
**Post date:** [Février 21, 2016, 7:56 UTC](https://www.debian-fr.org/t/attribuer-le-nom-des-sous-dossiers-comme-valeur-de-variable/61313/1 "2016-02-21T19:56:51Z")

</div>

Bonjour,

Je suis en train de faire un script de sauvegarde. Dans mon dossier www/ J’ai des tas de dossiers, qui correspondent à des services. Chaque service a une bdd sql qui a le même nom.

Donc je voudrais automatiser mes sauvegardes en fonction d’une variable $service.

En théorie, ça donnerait:

`Pour chaque $service == NOM_DE_SOUS_DOSSIER
{
  rsync -av /www/$service /destination/$service/
  mysqldump --user=XXXX --password=YYYY > XXXX /destination/$service/sql
}
`

Donc ce qui m’embête, c’est comment attribuer le nom du sous dossier dans $service, et comment faire pour balayer tous les sous dossiers (donc tous les services) ?

Merci de votre lecture.

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 7:56 UTC](https://www.debian-fr.org/t/attribuer-le-nom-des-sous-dossiers-comme-valeur-de-variable/61313/2 "2016-02-21T19:56:52Z")

</div>

Tu dois pouvoir le faire comme ça :

`for dir in /www/* ; do
  service="$(basename $dir)"
  rsync -av "/www/$service" "/destination/$service/"
  mysqldump --user=XXXX --password=YYYY > XXXX "/destination/$service/sql"
done`  
🙂

---

<div class="post-metadata">

**Author:** ![Maxdeconde](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/4491bb/32.png) [@Maxdeconde](https://www.debian-fr.org/u/Maxdeconde)\
**Post date:** [Février 21, 2016, 7:56 UTC](https://www.debian-fr.org/t/attribuer-le-nom-des-sous-dossiers-comme-valeur-de-variable/61313/3 "2016-02-21T19:56:57Z")

</div>

Bonjour,

Pour en l’état, ça ne marche pas, il me dit “fin prématurée”…

Je continue mes investigations.

EDIT : En fait ça marche, il faut pas que j’oublie le done à la fin ^^

Merci pour ton aide ^^

---

<div class="post-metadata">

**Author:** ![hasable](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/h/c5a1d2/32.png) [@hasable](https://www.debian-fr.org/u/hasable)\
**Post date:** [Février 21, 2016, 7:58 UTC](https://www.debian-fr.org/t/attribuer-le-nom-des-sous-dossiers-comme-valeur-de-variable/61313/4 "2016-02-21T19:58:23Z")

</div>

Par contre ça ne marchera pas si tu as un espace dans le nom d’un de tes services (ce dont je doute, étant donné l’endroit ou ils sont placés…) Dans ce cas il faut jouer avec l’IFS (Internal File Separator) :

`IFS=\n
for dir in /www/* ; do
...`  
(c’était juste pour étaler ma pseudo-science. Si on me cherche, je suis déjà dehors ➡ )

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 7:58 UTC](https://www.debian-fr.org/t/attribuer-le-nom-des-sous-dossiers-comme-valeur-de-variable/61313/5 "2016-02-21T19:58:25Z")

</div>

Je pense que si ça marche :

[code]$ mkdir tata ‹&nbsp;to ti&nbsp;›  
$ for f in \* ; do

> echo $f  
> done  
> tata  
> to ti  
> $ rmdir tata ‹&nbsp;to ti&nbsp;›[/code] 🙂
