내 작업 디렉토리를 스크립트를 실행해야 하는 올바른 디렉토리와 비교하려고 합니다. 다음은 쉘 스크립트의 일부입니다.
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 명령으로는 아무 것도 수행하지 않습니다.