Problème avec un simple script Bash

Bonjour,

Mon programme consiste a créer un répertoire avec comme nom la date du jour.
Rien de plus simple me dirai vous …

#!/bin/sh
date= &(date '+%d%m%Y')
mkdir "$date"

Voici ce que j’obtient

19052011
mkdir: impossible de créer le répertoire «  »: Aucun fichier ou dossier de ce type

Je ne comprend pas :078

Merci d’avance pour votre aide.

ça ressemble à un problème d’encodage … peut-être à cause de l’interpréteur sh. Aussi, je conseil d’éviter ta variable nommée “date” car un script shell s’appel comme ceci déjà.

sinon, voilà comment je procède :

#!/bin/bash

ZEDATE=`/bin/date +%Y-%m-%d_%H-%M-%S`

mkdir -p ${ZEDATE}

si ça peut t’aider …

Bonjour,#!/bin/sh mkdir $(date '+%d%m%Y')devrait fonctionner.

On ne peut donc pas faire un mkdir sur une fonction ou une variable??

Sur une fonction non (pas de valeur de retour dans les fonctions shell.
Sur une variable sans problème.

Je ne connais pas la notation &(), ça fait quoi ? (le premier qui tente un RTFM…)

edit: je tourne 7 fois la langue dans ma bouche et je reposte

Ce fil est marqué comme “résolu” ???
par qui ?
où est la solution ?

C’est pas moi que je sache.

La solution de mike peut être??

J’aimerais bien quand même que les membres qui ont réponse à leur question, non seulement marquent le sujet comme étant résolu, ce qui est fait, mais aussi explique le “comment”.
Éventuellement, si la résolution est due à la réponse d’un autre membre, un remerciement n’est ptet pas superflu :confused:

Je ne sais pas, mais c’est pas moi qui ai marqué le fil comme résolu.

[quote=“MisterFreez”]
Sur une fonction non (pas de valeur de retour dans les fonctions shell.
[…] (le premier qui tente un RTFM…)[/quote]
:eusa-naughty:

RTFM ! :text-lol:

#!/bin/sh
function random
{ echo ${RANDOM}; }

for i in *
do
printf "%i : %s\n" "$(random)" "${i}"
done

:eusa-whistle:

On appelle pas ça une valeur de retour. Ca c’est juste la seule manière de faire, mais ça reste moche parce que tu utilise la sortie standard. Ta fonction qui a une valeur de retour ne peux pas imprimer des choses dans le shell, tu crée un sous-shell juste pour ça,…

Non je n’appelle pas ça avoir une valeur de retour !

:naughty:

#!/bin/sh
function random
{ echo ${RANDOM}; echo "sortie standard" >&3; }

for i in *
do
{ printf "%i : %s\n" "$(random)" "${i}"; } 3>&1
done

:whistle:

si tu veux vraiment “une valeur de retour”, toutes les fonctions en ont une … ça s’appelle le statut ! Mais ce n’est qu’un entier donc tu ne peux pas aller bien loin avec :wink: