cd /tmp
if [[ $(echo "`pwd`" | awk -F '/' '{print $NF}') == "tmp" ]]; then
echo "YES"
else
echo "NO"
fi
cd -
예, 다음과 같이 인쇄됩니다.
YES
/tmp
하지만 난 그냥 원해
YES
답변1
경로를 인쇄하는 것이 cd -
마지막 명령입니다. 최종 작업 디렉터리를 볼 수 있도록 경로를 인쇄합니다. 이는 cd
피연산자(단일 대시)를 사용하여 호출할 때 나타나는 특별한 동작 이며 -
, 이 경우 다음과 동일합니다.
cd "$OLDPWD" && pwd
cd "$OLDPWD"
이를 방지하려면 ( OLDPWD
이전 작업 디렉토리의 값을 보유하는 특수 변수)를 사용할 수 있지만 ,cd /tmp
실패및 코드 출력 NO
, 그리고 둘 다 cd -
예상치 cd "$OLDPWD"
못한 디렉토리로 이동될 수 있습니다.
대신에
(
cd /tmp
if [[ $(echo "`pwd`" | awk -F '/' '{print $NF}') == "tmp" ]]; then
echo YES
else
echo NO
fi
)
첫 번째는 서브쉘 외부의 작업 디렉토리에 cd
영향을 주지 않습니다 .(...)
또한 테스트가 더욱 안전하고 효율적으로 실행됩니다.
if [[ $PWD == */tmp ]]; then
echo YES
else
echo NO
fi
이 PWD
변수는 현재 작업 디렉토리의 경로 이름을 포함하며 일반적으로 명령 대신 사용하려는 변수입니다 pwd
. 테스트는 단순히 현재 작업 디렉터리의 경로 이름이 string 으로 끝나는지 여부를 테스트합니다 /tmp
. 이는 awk
코드에서 수행하려는 작업입니다(그러나 경로 이름에 개행 문자가 포함되어 있으면 실패합니다).
cd
들어갈 수 있는지 확인하고 싶지만 /tmp
실제로는 들어갈 수 없는 경우 다음을 사용하세요.
( if cd /tmp; then echo YES; else echo NO; fi )
macOS 및 Solaris와 같은 외부 cd
유틸리티가 있는 시스템에서는 다음과 같이 사용할 수 있습니다.
if /usr/bin/cd /tmp; then
echo YES
else
echo NO
fi
외부 cd
유틸리티는 실제로 작업 디렉터리를 변경하는 데 사용할 수 없지만 특정 디렉터리로 변경할지 여부를 결정하는 등의 테스트에는 여전히 유용할 수 있습니다.가능할 것이다. 당신은 또한 볼 수 있습니다"cd" 외부 명령의 의미는 무엇입니까?
수행하려는 작업이 /tmp
디렉터리가 존재하고 디렉터리(또는 디렉터리에 대한 심볼릭 링크)인지 테스트하는 것이라면 가장 일반적인 접근 방식은 사용하지 않고 cd
다음과 같은 테스트를 사용하는 것입니다.
if [ -d /tmp ]; then
echo YES
else
echo NO
fi