(4 réponses)
Fermé il y a 3 ans.
Quel est le problème avec les commandes ci-dessous ?
$ var1="~/Music/$(date +%d%m%y)"
$ echo "$var1"
~/Music/240118
$ mkdir "$var1"
mkdir: cannot create directory ‘~/Music/240118’: No such file or directory
Cependant
$ mkdir ~/Music/240118
fonctionne.
Je n'aurais jamais pensé poser de telles questions après des années d'utilisation de bash…
Réponse acceptée :
L'expansion de tilde ne fonctionne pas après l'expansion de la variable, donc si vous mettez un tilde littéral dans var
, il se terminera par un tilde littéral de mkdir
. (Notez comment le message d'erreur de mkdir
contient un tilde littéral, et non le chemin réel de votre répertoire personnel.)
Et, puisque vous mettez le tilde entre guillemets dans le devoir, il ne s'y développe pas non plus. Si ce n'est pas entre guillemets, c'est le cas :
$ var="~/Music"; echo $var
~/Music
$ var=~/"Music"; echo $var
/home/me/Music
Bien sûr, vous pouvez toujours utiliser $HOME
à la place :
$ var="$HOME/Music"; echo $var
/home/me/Music