다음 명령의 문제점은 무엇입니까?
$ 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