
주어진 경로가 파일이나 디렉터리를 가리키는지 확인하려고 합니다. 다음 코드로 이것을 시도했습니다.
#if $mypath is a file
if [[ -f $mypath ]]; then
그리고
#if mypath is a directory
if [[ -d $mypath ]]; then
두 조각 모두 주어진 경로가 절대 경로(예: /home/user/mydir/...)일 때 잘 작동합니다. 그러나 주어진 경로가 ~로 시작하는 경우(예: ~/mydir/...) 두 조각 모두 true를 반환합니다. path는 파일이나 디렉터리를 가리킵니다.
내가 무엇을 놓치고 있는지, 아니면 가능한지 아는 사람이 있나요?
답변1
문제를 발견했습니다.
문제는 구성 파일에서 경로를 가져오고 있으므로 경로가 문자열로 저장된다는 것입니다. 이를 통해,물결표가 확장되지 않음, 이것이 문제의 원인입니다. 내 해결 방법은 물결표를 $HOME으로 수동으로 바꾸는 것이었습니다. $HOME은 경로가 인용되더라도 확장됩니다. 그래서 기본적으로:
mypath="${mypath/#\~/$HOME}"
#if $mypath is a file
if [[ -f $mypath ]]; then