사용자에게 파일 위치를 묻는 메시지를 표시하고 이를 절대 경로로 변환하는 스크립트를 만들고 있습니다.
이것이 내가 지금까지 가지고 있는 것입니다. 이걸 어떻게 연결해야 할지 모르겠습니다.
물론이죠.sh
read -e -p "Enter a path to a file: " PATH
CONVERTPATH="$(pwd $PATH)" "/" "$(basename $PATH)"
echo Absolute path is $CONVERTPATH
답변1
~을 위한추가, 추가 따옴표를 제거하기만 하면 됩니다.
CONVERTPATH="$(pwd $PATH)" "/" "$(basename $PATH)"
도착하다
CONVERTPATH="$(pwd $PATH)/$(basename $PATH)"
그러나 몇 가지 문제도 있습니다.
pwd
인수는 허용되지 않습니다.dirname
제공된 경우에는 인수를 사용할 수 있습니다.- 이 명령 은 이름을 다음과 같이
read
설정하지 않습니다 .PATH
name
- 명령
echo
이 완전히 인용되지 않았습니다.
그리고그것들수정하면 다음과 같은 결과를 얻을 수 있습니다.
#!/bin/bash
read -e -p "Enter a path to a file: " name
CONVERTPATH="$(dirname $name)/$(basename $name)"
echo "Absolute path is $CONVERTPATH"
누군가가 변수를 사용하여 프롬프트에 응답하는 상황은 처리하지 않습니다. 또한 의 의도된 용도는 pwd
절대 디렉토리를 얻을 가능성이 가장 높습니다. 추가로 교체하여 시도해 볼 수 있습니다.
#!/bin/bash
read -e -p "Enter a path to a file: " name
head=$(dirname "$name")
head=$(cd "$head" && pwd)
CONVERTPATH="$head/$(basename $name)"
echo "Absolute path is $CONVERTPATH"
하지만 여전히 원하는 대로 되지 않습니다.생각하다. (귀하의 관점에서 볼 때) 문제는 pwd
OSX에서 시스템이 명령의 심볼릭 링크를 기반으로 한 결과만 에코한다는 것 입니다 cd
. 이는 단지 OSX의 특이한 현상이 아니라, 예를 들어 엔트리 체인을 따라 올바른 작업을 수행하기 위해 cd
권한 없이 디렉토리에 들어갈 수 있도록 허용하는 오랜 Unix 동작입니다 .pwd
..
결과에 기호 링크가 포함되지 않은 절대 경로 이름을 원하는 경우 다른 접근 방식을 취해야 합니다. OSX에는realpath
--하지만 명령줄에는 없습니다. 다른 시스템에서는 사용할 수 있습니다readlink -f
, 하지만 여기는 아닙니다.
이 주제에 대한 일반적인 토론: