次のコマンドの問題は何ですか?
$ var1="~/Music/$(date +%d%m%y)"
$ echo "$var1"
~/Music/240118
$ mkdir "$var1"
mkdir: cannot create directory ‘~/Music/240118’: No such file or directory
しかし、
$ mkdir ~/Music/240118
働く
長年にわたってbashを使ってきたので、この質問をすることは夢にも知りませんでした。
答え1
変数が展開された後はチルダ拡張が適用されないため、リテラルチルダを挿入するとvar
最終的にリテラルチルダになりますmkdir
。 (エラーメッセージにmkdir
ホームディレクトリの実際のパスではなくリテラルチルダが含まれていることに注意してください。)
そして、タスクの引用符の中にチルダを入れるので、そこでも拡張されません。引用符で囲まれていない場合は、次の操作を行います。
$ var="~/Music"; echo $var
~/Music
$ var=~/"Music"; echo $var
/home/me/Music
もちろん、いつでも次のものを使用できます$HOME
。
$ var="$HOME/Music"; echo $var
/home/me/Music