mkdir: 디렉터리를 생성할 수 없습니다: 해당 파일이나 디렉터리가 없습니다.

mkdir: 디렉터리를 생성할 수 없습니다: 해당 파일이나 디렉터리가 없습니다.

다음 명령의 문제점은 무엇입니까?

$ 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

관련 정보