OVH Cloud OVH Cloud

bash-Creer un dossier avec la date pour nom

5 réponses
Avatar
Daniel Alain
Bonjour,

J'ai commencé à m'initier aux lignes de commandes en bash.

Je souhaite créer un dossier ayant pour nom la date.

Si je définis la variable laDate par:

laDate="date +%Y%m%d"

Je peux vérifier avec la commande $laDate que cette variable est
(semble être) assignée à 20040603.

Toutefois, si je fais

mkdir $laDate

alors deux dossiers sont créés; les dossiers «date» et «+%Y%m%d».

Après de longues heures passées sur le net à fouiller les tutoriels et
documents de référence -- et après avoir essayé les variantes
${laDate}, laDate='date +%Y%m%d', laDate=`date +%Y%m%d`, .etc. --
je n'arrive pas à résoudre mon problème.

Quelqu'un peut-il m'aider?

Merci d'avance

Daniel

5 réponses

Avatar
eurema
peut-etre est il possible de créer 'date' puis de renommer en date+%Y%m%d

gege

Daniel Alain a écrit:
Bonjour,

J'ai commencé à m'initier aux lignes de commandes en bash.

Je souhaite créer un dossier ayant pour nom la date.

Si je définis la variable laDate par:

laDate="date +%Y%m%d"

Je peux vérifier avec la commande $laDate que cette variable est
(semble être) assignée à 20040603.

Toutefois, si je fais

mkdir $laDate

alors deux dossiers sont créés; les dossiers «date» et «+%Y%m%d».

Après de longues heures passées sur le net à fouiller les tutoriels et
documents de référence -- et après avoir essayé les variantes
${laDate}, laDate='date +%Y%m%d', laDate=`date +%Y%m%d`, .etc. --
je n'arrive pas à résoudre mon problème.

Quelqu'un peut-il m'aider?

Merci d'avance

Daniel


Avatar
Patrick Stadelmann
In article <030620042231378330%,
Daniel Alain wrote:

Bonjour,

J'ai commencé à m'initier aux lignes de commandes en bash.

Je souhaite créer un dossier ayant pour nom la date.

Si je définis la variable laDate par:

laDate="date +%Y%m%d"

Je peux vérifier avec la commande $laDate que cette variable est
(semble être) assignée à 20040603.

Toutefois, si je fais

mkdir $laDate

alors deux dossiers sont créés; les dossiers «date» et «+%Y%m%d».

Après de longues heures passées sur le net à fouiller les tutoriels et
documents de référence -- et après avoir essayé les variantes
${laDate}, laDate='date +%Y%m%d', laDate=`date +%Y%m%d`, .etc. --
je n'arrive pas à résoudre mon problème.


mkdir `$laDate`

Ca indique qu'il faut exécuter la commande contenue dans la variable
avant de l'utiliser comme argument de mkdir.

Patrick
--
Patrick Stadelmann

Avatar
Daniel Alain
In article ,
Patrick Stadelmann wrote:


mkdir `$laDate`

Ca indique qu'il faut exécuter la commande contenue dans la variable
avant de l'utiliser comme argument de mkdir.

Patrick


Merci pour votre réponse et votre explication. Cela fonctionne
correctement.

Aussi, en continuant avec la méthode essais/erreurs, j'ai pu observer
que ça fonctionnait aussi avec

mkdir $($laDate)

ce qui m'a un peu étonné car j'avais lu que $($...) était réservé
(nécessaire?) aux opérations avec des nombres.

Risque-t-on des problèmes (effets de bords?) en utilisant cette méthode?


Merci encore.
Merci aussi à eurema

Daniel :-)

Avatar
Patrick Stadelmann
In article <040620040605144607%,
Daniel Alain wrote:

Aussi, en continuant avec la méthode essais/erreurs, j'ai pu observer
que ça fonctionnait aussi avec

mkdir $($laDate)

ce qui m'a un peu étonné car j'avais lu que $($...) était réservé
(nécessaire?) aux opérations avec des nombres.


Non, la commande $( ) est équivalente à ` `.

Risque-t-on des problèmes (effets de bords?) en utilisant cette méthode?


Il y a quelques différences dans la gestion des caractères spéciaux
comme par exemple entre les deux variantes. Voir le man de bash,
section "Command Substitution" pour les détails.

Patrick
--
Patrick Stadelmann

Avatar
Olivier Croquette
Daniel Alain wrote:

Si je définis la variable laDate par:

laDate="date +%Y%m%d"


Là tu définis plutôt une variable contenant une commande, pas celle
contenant la date.

Fais plutôt :
laDate=`date +%Y%m%d`
mkdir $laDate

Je peux vérifier avec la commande $laDate que cette variable est
(semble être) assignée à 20040603.


Non :) cf ci-dessus, ta variable n'est pas la date mais la commande.


--
Olivier