Bash
從 PHP 配置文件中解析憑據
我想編寫 bash 腳本來解析配置文件中的數據。我搜尋了這個,但沒有找到可以修改以滿足我需要的東西。
Joomla!配置文件:
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"
它們儲存在一個變數中。最佳做法是什麼?
使用 GNU
grep
,您可以:user=$(grep -oP "\\\$user.+?'\K[^']+" file) pass=$(grep -oP "\\\$password.+?'\K[^']+" file)
-P
啟用 Perl 兼容正則表達式,這給了我們\K
(忽略到目前為止匹配的任何內容)。意思是“只列印該-o
行的匹配部分。然後,我們搜尋$var
(我們需要三個\
,以避免擴展變數並避免$
被視為正則表達式的一部分),單引號和一個或多個非'
字元直到下一個'
。或者,您可以使用
awk
:user=$(awk -F"'" '/\$user/{print $2}' file) pass=$(awk -F"'" '/\$password/{print $2}' file)
在這裡,我們將欄位分隔符設置為
'
,因此變數的值將是第二個欄位。該awk
命令列印匹配行的第二個欄位。