(4 risposte)
Chiuso 3 anni fa.
Cosa c'è che non va nei comandi seguenti?
$ var1="~/Music/$(date +%d%m%y)"
$ echo "$var1"
~/Music/240118
$ mkdir "$var1"
mkdir: cannot create directory ‘~/Music/240118’: No such file or directory
Tuttavia
$ mkdir ~/Music/240118
funziona.
Non avrei mai pensato di fare domande del genere dopo anni di utilizzo di bash...
Risposta accettata:
L'espansione della tilde non funziona dopo che la variabile è stata espansa, quindi se metti una tilde letterale in var
, finirà come una tilde letterale in mkdir
. (Nota come il messaggio di errore da mkdir
contiene una tilde letterale, non il percorso effettivo della tua home directory.)
E, dal momento che metti la tilde tra virgolette nel compito, non si espande nemmeno lì. Se non è tra virgolette, lo fa:
$ var="~/Music"; echo $var
~/Music
$ var=~/"Music"; echo $var
/home/me/Music
Ovviamente puoi sempre usare $HOME
invece:
$ var="$HOME/Music"; echo $var
/home/me/Music