1

bash 脚本中的语句可以if根据通配符确认其当前文件夹吗?

我正在制作一个脚本来快速将一个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 的机器上使用,如果有任何需要更改,请告诉我。

4

1 回答 1

1

首先,你需要使用[[命令;[不进行模式匹配。其次,星号需要不加引号才能被视为模式元字符,而不是文字星号。

if [[ $CWD = "/var/www/vhosts/"* ]]; then
于 2014-02-28T14:02:17.500 回答