【问题标题】:Confirming a bash script is in the right folder with wildcards?使用通配符确认 bash 脚本位于正确的文件夹中?
【发布时间】:2014-04-01 13:26:06
【问题描述】:

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 的机器上使用,如果有任何需要更改,请告诉我。

【问题讨论】:

    标签: bash .htaccess if-statement centos6 drush


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多