2011-09-10 7 views
0

Drupalで知っているように、データベースコネクタを備えたsettings.phpファイルがあります。
$ db_url = 'mysql:// username:password @ localhost/databasename';
私はシェルスクリプトが 'databasename'である文字列を抽出し、それをエコーし​​たいと思います。シェルスクリプトを使用してsettings.phpからDrupalデータベース名を抽出してください

大変助かります。
おかげであなたが使用することができます

答えて

2

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

最初の行はdb_urlのためのsettings.phpを検索し、最初の3つのスラッシュの前にすべてのテキストを削除し、カットにパイプ。最後に最後の':が変数の最後から削除され、エコーされます。このコードは、URLの形式に非常に依存しています。データベース名の前に常に3つのスラッシュがあるという事実に依存しています。

+0

はい、それはまた、ファイル形式に依存して印刷するすべて – Valor

+0

ああ、本当に、私はDrupalのを使用したことがないので、のsettings.phpはdb_url文字列の多くが含まれています私は$ db_urlが一度だけ宣言され、その後そのファイルで使われなかったと推測しました。申し訳ありません。 – whg

0

次のコマンドラインは、あなたのDrupal 6のsettings.phpファイルからデータベース名を抽出し、出力として、それをエコーし​​ます(右、あなたが使用している一つである?):

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

あなたの場合

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

お知らせ:Drupalの7のsettings.phpファイルには、わずかに異なるとあるだけで、テキストファイルを作成し、それが実行可能に(chmodのuは+ Xファイル名)と、それを実行するbashスクリプトでそれを使用したいです推奨コマンド/スクリプトはそのためにを使用できません。あなたもDrupal 7のためにそれを必要としますか?

0

これは、Drupalの7のために私の作品:

grep "  'database' =>" settings.php | cut -d ">" -f 2 | cut -d "'" -f 2 
関連する問題