쉘 스크립트에서 두 파일 경로를 비교하는 방법

쉘 스크립트에서 두 파일 경로를 비교하는 방법

내 작업 디렉토리를 스크립트를 실행해야 하는 올바른 디렉토리와 비교하려고 합니다. 다음은 쉘 스크립트의 일부입니다.

CURR_DIR=echo pwd
echo $CURR_DIR
if [ "$CURR_DIR" == "/proj/project_a/scripts_shell" ]; then
    echo "You are running script from correct directory"
fi

이 경우에는 /proj/project_a/scripts_shell(현재 작업 디렉토리)에 있는지 확인했지만 어떤 이유로 if 문에서 이를 감지할 수 없습니다. 따라서 메시지가 인쇄되지 않습니다.

이게 뭐가 문제야?

답변1

이 시도:

if [ "$PWD" = "/proj/project_a/scripts_shell" ]; then
    echo "You are running the script from the correct directory" 
fi

문제는 그렇게 할 때 CURR_DIR=echo pwd쉘이 pwd환경 변수를 로 CURR_DIR설정하여 호출한다는 것입니다 echo. 변수에서 명령의 출력을 캡처해야 하는 경우 을 수행하면 됩니다 VAR=$(cmd).

답변2

BASH에서 명령 결과를 문자열로 저장하는 표기법입니다.

CURR_DIR=$(pwd)

또는

CURR_DIR=`pwd`

입력하면 "pwd" 문자열이 CURR_DIR=echo pwd만들어집니다 . CURR_DIR이것이 echo 기능이 작동하는 방식입니다. 예를 들어 쉘에서 다음 줄을 실행하십시오.

echo blah blah blah 

이것은 blah 명령으로는 아무 것도 수행하지 않습니다.

관련 정보