사용자가 인수로 제공한 디렉토리의 크기를 얻고 싶습니다. 예:
read -p "Enter the directory" target
du -k $target
사용자가 경로를 다음과 같이 제공하면 ~/Documents/dir
오류 메시지가 나타납니다.du: cannot access '~/Documents/dir': No such file or directory
반면에 다음과 같이 명령을 내리면:
du -k ~/Documents/dir
원하는 출력을 얻고 있습니다.
du 명령과 함께 변수를 사용할 수 없는 이유는 무엇입니까?
답변1
는 ~
셸을 통해 읽은 후나 명령에 배치된 후에는 확장되지 않습니다 du
. 다음 코드를 사용하여 bash가 확장을 수행하도록 강제할 수 있습니다:
read -p "Enter the directory" target
target=${target/#\~/$HOME}
du -k "${target}"
는 ${target/#\~/$HOME}
중요한 부분입니다. 환경 변수 ~
의 내용으로 대체됩니다 HOME
.