この質問にはすでに回答があります :チルダ(〜)が二重引用符で囲まれないのはなぜですか?
(4つの回答)
3年前に閉鎖されました。
Linux
(4つの回答)
3年前に閉鎖されました。
以下のコマンドの何が問題になっていますか?
$ 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を使用した後、私がそのような質問をするだろうとは思っていませんでした…
承認された回答:
変数が展開された後はチルダ展開が機能しないため、var
にリテラルチルダを配置すると 、mkdir
への文字通りのチルダとして終了します 。 (mkdir
からのエラーメッセージに注意してください ホームディレクトリの実際のパスではなく、文字通りのチルダが含まれています。)
また、割り当てではチルダを引用符で囲んでいるため、チルダも拡張されません。引用符で囲まれていない場合は、次のようになります。
$ var="~/Music"; echo $var
~/Music
$ var=~/"Music"; echo $var
/home/me/Music
もちろん、いつでも$HOME
を使用できます。 代わりに:
$ var="$HOME/Music"; echo $var
/home/me/Music