2011-03-28 5 views
0

현재 사용중인 cms에 대한 확장을 설치하는 작은 스크립트를 작성하려고합니다. 그러나, 내 상자에 내가 ssh 때, 나는 항상 내가 내 디렉토리를 설치하는 올바른 디렉토리에 있는지보고 싶지 않아. 대신, 그냥 명령을 실행하고 그 명령에서 현재 작업 디렉토리를 확인한 다음 그 디렉토리의 끝을 내가 미리 정의한 디렉토리와 비교합니다.현재 디렉토리를 유닉스의 미리 정의 된 디렉토리와 비교하십시오.

예를 들어 extensions 폴더에 내 확장 프로그램을 설치했습니다. 내가 pwd를 달면 /home/site.com/not_extensions_directory/가 나온다고 말하십시오. 그런 다음 스크립트는 현재 디렉토리가 extensions이 아니므로 설치를 중지하고 경고를 인쇄 할 수 있음을 알 수 있습니다. 더 좋은 솔루션이 스크립트를 낳게 될 것

내가 올바른 디렉토리에 아닙니다 다음 유닉스에이 일에 대한 올바른 구문이 어떻게 될지

would you like to switch to the "extensions" directory to continue installing (yes/no)?

에 대한 사용자 프롬프트를 제공 감지 상자 (둘 중 하나의 솔루션)?

+0

@shellter - 로그인 할 때 발생하지 않습니다. 새로운 사이트 인스턴스를 설정하는 경우 실행하는 것입니다. 나는 그것이 내 리그 ATM (그리고 미래의 X = prob)에서 벗어나기 때문에이 상자를 완전히 관리하지는 않는다. 또한 미래에 새로운 확장을 설치하는 경우 확장 할 수도 있습니다. – hellatan

답변

0

스크립트 맨 위에 넣으십시오. /path/to/extensionsextensions 폴더로 바꿉니다.

CURRENT_DIR="$(cd "$(dirname "$0")" && pwd)" 

if [ $CURRENT_DIR != /path/to/extensions ]; then 
    echo "This script needs to be run from /path/to/extensions" 
    exit 1 
fi 
+0

이것은 좋은 출발점입니다 ... 좀 더 동적 인 것을 시도했습니다./c 다른 폴더 경로를 가진 여러 사이트가'extensions' 폴더에 있습니다. 그러나'$ CURRENT_DIR'에'echo'할 때 경고 메시지가 나타납니다 :'dirname : invalid option - b. 자세한 정보는 dirname --help '를 시도하십시오.' – hellatan

+1

bash 로그인 쉘에서있는 그대로 쉘 조각을 실행했습니다. '$ 0'은 "-bash"(sshd에 의해 설정 됨)로 확장되며, dirname은 "-b"로 시작하는 지원하지 않는 옵션의 클러스터 된 옵션 그룹으로 이해합니다. – pilcrow

관련 문제