使用通配符确认 bash 脚本位于正确的文件夹中?

     2023-03-10     115

关键词:

【中文标题】使用通配符确认 bash 脚本位于正确的文件夹中?【英文标题】:Confirming a bash script is in the right folder with wildcards? 【发布时间】: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 的机器上使用,如果有任何需要更改,请告诉我。

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

在 bash 脚本中运行 apktool

...tool反编译多个.apk文件的bash脚本。每个apk文件都位于示例文件夹的子目录中。#!bin/bashforitemin$(lssamples);doforapkin$(ls"samples/$item");doecho./apktool 查看详情

Bash 脚本未在 Cron 中正确执行

...一个文本文件。很多人似乎都遇到过,这个脚本在被cron使用时不能正常运行。但是,我看到的大多数修复方法似乎不适用于我的情况。我已经明确说明了所有路径,脚本具有执行权限,并且c 查看详情

GRUB 脚本中的文件名通配符扩展

】GRUB脚本中的文件名通配符扩展【英文标题】:FilenamewildcardexpansioninGRUBscripting【发布时间】:2017-07-0209:16:14【问题描述】:在GRUB脚本中是否可以进行文件名通配符扩展?类似:foriindirectory/*;doecho$i;done我的目的是让GRUB加载位于... 查看详情

linux里面bash是啥?

...文件称为脚本。和其他Unixshell一样,它支持文件名替换(通配符匹配)、管道、here文档、命令替换、变量,以及条件判断和循环遍历的结构控制语句。包括关键字、语法在内的基本特性全部是从sh借鉴过来的。其他特性,例如历史... 查看详情

如何在 bash 脚本中提示用户进行确认? [复制]

】如何在bash脚本中提示用户进行确认?[复制]【英文标题】:HowdoIpromptauserforconfirmationinbashscript?[duplicate]【发布时间】:2010-12-2512:36:25【问题描述】:我想简短地说“你确定吗?”在潜在危险的bash脚本顶部提示确认,最简单/最... 查看详情

如何在 bash 脚本中正确使用 telnet?

】如何在bash脚本中正确使用telnet?【英文标题】:Howtocorrectlyusetelnetinabashscript?【发布时间】:2020-08-3012:56:34【问题描述】:我正在运行以下命令来测试端口连接curl-vtelnet://targetipaddress:desiredportnumber当服务器连接成功时,我看到... 查看详情

Bash 如何在不同的目录上下文中执行命令?

...位于/bin中,当前工作目录对于正确运行它非常重要。该脚本会影响其运行所在目录中的文件。现在,我还有一个自定义shell脚本,它在一个目录中执行 查看详情

SSIS 脚本任务使用通配符删除文件

】SSIS脚本任务使用通配符删除文件【英文标题】:SSISScriptTaskDeleteFilesusingaWildcard【发布时间】:2020-12-1509:36:39【问题描述】:使用SQLServer2014\\VS2019。我有以下C#脚本任务来删除文件夹中早于x天的文件,这是可行的。publicvoidMain()i... 查看详情

如何在输入输出中正确使用通配符

】如何在输入输出中正确使用通配符【英文标题】:Howtoproperlyusewildcardsininputandoutput【发布时间】:2019-08-2713:38:11【问题描述】:我最近决定从snakemake开始。我在堆栈和snakemakedoc上都找不到任何适合我需要的东西。我觉得我有些... 查看详情

如何使用 bash 脚本检查 AIX 中文件的最后修改日期?

】如何使用bash脚本检查AIX中文件的最后修改日期?【英文标题】:HowtochecklastmodifieddateofafileinAIXusingbashscript?【发布时间】:2019-11-0618:15:17【问题描述】:我想在AIX中使用bash脚本检查文件的最后修改日期。我试过了,date-rfile.txt"+... 查看详情

使用 Bash 在每个子目录中执行操作

...【问题描述】:我正在编写一个脚本,该脚本需要在特定文件夹的每个子目录中执行操作。最有效的写法是什么?【问题讨论】:请考虑返回并重新评估答案的正确性-尽管存在重大错误,但您已经得到了一个已接受的答案获得... 查看详情

被另一个bash脚本调用后获取文件的当前目录[重复]

...bash脚本,它调用另一个bash脚本。第二个脚本位于不同的文件夹中。script1.sh:"some_other_folder/script2.sh 查看详情

如何使用 bash 脚本替换文件名中的空格

】如何使用bash脚本替换文件名中的空格【英文标题】:Howtoreplacespacesinfilenamesusingabashscript【发布时间】:2011-02-1203:50:44【问题描述】:谁能推荐一个安全的解决方案,从给定的根目录开始,用下划线递归替换文件和目录名称中... 查看详情

如何使用 bash 脚本从 base64 转换的文件中播放声音?

】如何使用bash脚本从base64转换的文件中播放声音?【英文标题】:Howtoplaysoundfrombase64convertedfilesusingbashscript?【发布时间】:2019-04-1115:36:02【问题描述】:想使用bash脚本播放base64格式的mp3转换文件。首先我做了这个:base64notificati... 查看详情

如何编写一个与用户确认现有变量值的 Bash 函数

】如何编写一个与用户确认现有变量值的Bash函数【英文标题】:howtowriteaBashfunctionthatconfirmsthevalueofanexistingvariablewithauser【发布时间】:2014-11-1801:44:12【问题描述】:我有大量配置变量,我希望用户对其值进行确认。因此,可能... 查看详情

错误:在声明性 Jenkinsfile 中使用 Bash 脚本

...本代码时我面临一些挑战。UserCase:我在一个GIT存储库的文件夹结构中保留了多个工具代码。我希望每当任何开发人员对单个文件夹进行更改时,都会针对特定文件夹相关代码 查看详情

bash 脚本中的源文件

...script【发布时间】:2013-04-0708:02:37【问题描述】:我正在使用相邻的两个版本的ROS。要使用一个,我必须为特定版本获取一些环境变量。我想创建一个执行此操作的脚本。但是如果我创建一个像下面这样的脚本没有设置变量,它... 查看详情

如何使用 bash 脚本重命名当前目录及其子目录中的文件?

】如何使用bash脚本重命名当前目录及其子目录中的文件?【英文标题】:Howtorenamefilesincurrentdirectoryanditssubdirectoriesusingbashscript?【发布时间】:2012-05-1914:15:57【问题描述】:我可以使用“重命名”命令将缺少的字符添加到当前目... 查看详情