Bash

從 PHP 配置文件中解析憑據

  • September 17, 2015

我想編寫 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命令列印匹配行的第二個欄位。

引用自:https://unix.stackexchange.com/questions/230102