設定ファイルのデータを解析するbashスクリプトを作成したいと思います。これを検索しましたが、必要に応じて変更できる項目が見つかりませんでした。
ちょっと!構成ファイル:
public $access = '1';
public $debug = '0';
public $debug_lang = '0';
public $dbtype = 'mysqli';
public $host = 'localhost';
public $user = 'template';
public $password = 'template';
public $db = 'template_druha';
public $dbprefix = 'dsf1i_';
public $live_site = '';
public $secret = '2w9gHzPb4HfAs2Y9';
public $gzip = '0';
public $error_reporting = 'default';
"$user"
データベース資格情報を使用して解析し、"$password"
それを変数に保存したいと思います。ベストプラクティスは何ですか?
ベストアンサー1
GNUを使用すると、grep
次のことができます。
user=$(grep -oP "\\\$user.+?'\K[^']+" file)
pass=$(grep -oP "\\\$password.+?'\K[^']+" file)
Perl互換の正規表現を有効にする-P
と、私たちに提供されます\K
(これまでの一致は無視されます)。-o
「行内の一致する部分のみを印刷します。次の項目まで単一引用符と1つ以上の非文字を検索します(変数の拡張を避け、正規表現の一部と見なされない場合は3つが$var
必要です)。\
$
'
'
または、次のものを使用できますawk
。
user=$(awk -F"'" '/\$user/{print $2}' file)
pass=$(awk -F"'" '/\$password/{print $2}' file)
'
ここでは、変数の値が2番目のフィールドになるようにフィールド区切り文字を設定しました。このawk
コマンドは、一致する行の2番目のフィールドを印刷します。