2014-02-28 56 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的,但它可能需要在基於debian的機器上使用,如果有什麼需要改變的話,請讓我知道。

回答

1

首先,您需要使用[[命令; [不做模式匹配。其次,星號需要不加引號才能被視爲模式元字符,而不是字面星號。

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

謝謝:) 完美。 –