簡體   English   中英

確認bash腳本位於通配符正確的文件夾中?

[英]Confirming a bash script is in the right folder with wildcards?

bash腳本中的if語句if可以基於通配符確認其當前文件夾?

我正在編寫一個腳本,以快速將一個Drupal站點置於維護模式,詢問您是否要保留.htaccess文件,保留sites文件夾和.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的計算機上使用它,如果需要任何更改,請也告訴我。

首先,您需要使用[[命令; [不執行模式匹配。 其次,星號需要取消引號,以將其視為模式元字符,而不是文字星號。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM