(4 respuestas)
Cerrado hace 3 años.
¿Qué hay de malo con los siguientes comandos?
$ var1="~/Music/$(date +%d%m%y)"
$ echo "$var1"
~/Music/240118
$ mkdir "$var1"
mkdir: cannot create directory ‘~/Music/240118’: No such file or directory
Sin embargo
$ mkdir ~/Music/240118
funciona.
Nunca pensé que haría esas preguntas después de años de usar bash...
Respuesta aceptada:
La expansión de tilde no funciona después de expandir la variable, por lo que si coloca una tilde literal en var
, terminará como una tilde literal a mkdir
. (Observe cómo el mensaje de error de mkdir
tiene una tilde literal, no la ruta real de su directorio de inicio).
Y, dado que pones la tilde entre comillas en la tarea, tampoco se expande allí. Si no está entre comillas, lo hace:
$ var="~/Music"; echo $var
~/Music
$ var=~/"Music"; echo $var
/home/me/Music
Por supuesto, siempre puedes usar $HOME
en cambio:
$ var="$HOME/Music"; echo $var
/home/me/Music