2011-09-10 62 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 
相关问题