2011-09-10 65 views
0

正如您在Drupal中所瞭解的那樣,存在一個包含數據庫連接器的settings.php文件。
$ db_url ='mysql:// username:password @ localhost/databasename';
我想要一個shell腳本來提取'databasename'字符串,並對其進行回顯。使用shell腳本從settings.php中提取Drupal數據庫名稱

非常感謝幫助。
感謝

回答

2

您可以使用:

#!/bin/bash 
dbname=`grep db_url settings.php | cut -d "/" -f 4` 
echo ${dbname%"';"} 

第一行的settings.php搜索爲db_url,然後通過管道進入該切口,去除第3條斜線之前的所有文本。最後,最後的':被從變量的末尾移除並且被回顯。此代碼非常依賴於url的格式,它依賴於數據庫名稱前總是有3個斜線的事實。

+0

是的,它也取決於文件格式,在settings.php中含有大量db_url字符串所以其印刷的一切 – Valor

+0

哦,真的,我從來沒有使用過的Drupal我推測$ db_url只聲明瞭一次,然後從未在該文件中使用過。對於那個很抱歉。 – whg

0

以下命令行將從您的Drupal的settings.php 6文件中提取數據庫名稱(這是您使用的一個吧?),並呼應它作爲輸出:

grep ^'$db_url' settings.php | cut -d "/" -f 4 | cut -d "'" -f 1 

如果您想使用它在bash腳本只創建一個文本文件,使之運行(chmod U + X名)並運行它:

#!/bin/bash 
grep ^'$db_url' settings.php | cut -d "/" -f 4 | cut -d "'" -f 1 

注意:7的Drupal的settings.php文件略有不同和建議的命令/腳本不會爲它工作。你是否也需要它用於Drupal 7?

0

這對我的作品爲Drupal 7:

grep "  'database' =>" settings.php | cut -d ">" -f 2 | cut -d "'" -f 2 
相關問題