[英]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.