2014-02-28 2 views
1

bash 스크립트의 if 문이 와일드 카드를 기반으로 현재 폴더를 확인할 수 있습니까?bash 스크립트가 와일드 카드로 올바른 폴더에 있는지 확인 하시겠습니까?

Drupal 사이트를 유지 관리 모드로 신속하게 지정하는 스크립트를 만들고 .htaccess 파일을 유지할지, 사이트 폴더와 .htaccess 파일 (요청 된 경우)을 유지할지, 모듈과 데이터베이스를 업데이트 할 것인지 묻습니다. 사이트를 유지 관리 모드에서 제거하십시오. 위의 작업을 완료했지만 쉽게 사용할 수 있도록 모든 사이트 폴더에 대해 중앙 위치에 저장된 하나의 마스터 스크립트를 갖고 싶습니다.

#/bin/bash 
CWD=$(pwd) 
cd $CWD 
echo $CWD 
if [ $CWD = "/var/www/vhosts/specific.site.folder" ]; then 
    echo "Updating drupal core files" 
    read -r -p "do you need to keep the .htaccess file? [y/N]" response 

if [ $response = y ] 
then 
    /usr/local/bin/drush vset maintenance_mode 1 
    mv ./.htaccess ../.htaccess 
    mv ./sites ../sites 
    rm -rf * 
    cp -R /sources/drupal/* ./ 
    mv ../sites ./sites 
    mv ../.htaccess ./.htaccess 
    chown -R httpd:httpd * 
    /usr/local/bin/drush up && /usr/local/bin/drush updb 
    /usr/local/bin/drush vset maintenance_mode 0 

elif [ $response = n ] 
then 
    /usr/local/bin/drush vset maintenance_mode 1 
    mv ./sites ../sites 
    rm -rf * 
    cp -R /sources/drupal/* ./ 
    mv ../sites ./sites 
    chown -R httpd:httpd * 
    /usr/local/bin/drush up && /usr/local/bin/drush updb 
    /usr/local/bin/drush vset maintenance_mode 0 
else 
    echo "Response must be either y or n" 
fi 
else 
     echo "not in a web directory, exiting" 
fi 

내가하고 싶은 것은 같은 스크립트이지만, 뭔가 같은 :

if [ $CWD = "/var/www/vhosts/*" ]; then 

이 작동하지 않았다

다음은 설계된대로 작동하는 내 스크립트입니다. 같은 스크립트가 어떤 사이트에서도 실행될 수 있지만 사이트 폴더 자체의 하위 디렉토리를 포함하여 다른 디렉토리는 안전하게 유지하도록이 기능을 사용하고 싶습니다.

내가 가진 것을 더 잘 수행 할 수 있다면, 제안 해주십시오.

이 서버는 centos 6을 기반으로하지만, 어떤 시점에서는 데비안 기반 컴퓨터에서 사용해야 할 수도 있습니다. 변경해야 할 사항이 있으면 알려주십시오.

답변

1

먼저 [[ 명령을 사용해야합니다. [은 패턴 일치를 수행하지 않습니다. 둘째, 별표는 별표 메타 문자가 아닌 패턴 메타 문자로 취급되도록 따옴표를 써야합니다.

if [[ $CWD = "/var/www/vhosts/"* ]]; then 
+0

감사합니다. 완벽하게 작동했습니다. –