Intereting Posts
Parse "passwd" команда с phpseclib Как вычитать с помощью SQL в MYSQL между двумя значениями даты и получить результат в минутах или секунде? почему я не вставляю данные в свой sql db с php Как усечь строку в PHP до слова, ближайшего к определенному числу символов? Строки UTF-8 в базе данных MySQL перепутались после изменения конфигурации Удалить инструкцию по построению запроса Doctrine загрузка видео в папку и ее ссылку на базу данных с использованием php Как ранжировать значения массива с повторяющимися значениями и пропускать некоторые позиции, если есть связь? Очистка данных XML перед вызовом SimpleXML Имеет ли много аргументов if ухудшение скорости рендеринга php? Диаграмма Google с данными CSV: ошибка столбцов Понимание ошибки php «Недостаточно памяти» Удалить начальные нули с сокращенной даты с помощью PHP Отправьте форму на один сервер, обработайте ее, а затем опубликуйте результаты в другом домене 500 внутренних ошибок сервера с запросом POST – Тонкая структура

Лучший / простой способ анализа параметров конфигурации в Sh / Bash и php

Я получил в каждом проекте php (около 25!), Некоторые скрипты sh, которые помогают мне с обычными задачами, такими как развертывание, синхронизация репо, экспорт / экспорт баз данных и т. Д.

Шрифты sh ​​одинаковы для всех проектов, которые я управляю, поэтому должен быть файл конфигурации для хранения различных параметров, которые зависят от проекта:

# example conf, the sintaxys only needs to be able to have comments and be easy to edit. host=www.host.com administrator_email=guill@company.com password=xxx 

Мне просто нужно найти чистый способ, с помощью которого этот файл конфигурации может быть прочитан (проанализирован) из сценария sh и в то же время иметь возможность читать те же самые параметры из моих PHP-скриптов. Без использования XML.

Знаете ли вы хорошее решение для этого?

Гильермо

Если вы не хотите, чтобы исходный файл отображался как pavanlimo, другой вариант – это перетащить переменные с помощью цикла:

 while read propline ; do # ignore comment lines echo "$propline" | grep "^#" >/dev/null 2>&1 && continue # if not empty, set the property using declare [ ! -z "$propline" ] && declare $propline done < /path/to/config/file 

В PHP применяются те же основные понятия:

 // it's been a long time, but this is probably close to what you need function isDeclaration($line) { return $line[0] != '#' && strpos($line, "="); } $filename = "/path/to/config/file"; $handle = fopen($filename, "r"); $contents = fread($handle, filesize($filename)); $lines = explode("\n", $contents); // assuming unix style // since we're only interested in declarations, filter accordingly. $decls = array_filter($lines, "isDeclaration"); // Now you can iterator over $decls exploding on "=" to see param/value fclose($handle); 

Просто отправьте файл conf скрипта в другой файл sh !.

Пример:

conf-file.sh:

 # A comment host=www.host.com administrator_email=guill@company.com password=xxx 

Ваш реальный сценарий:

 #!/bin/sh . ./conf-file.sh echo $host $administrator_email $passwword 

И тот же conf-файл может быть проанализирован в PHP: http://php.net/manual/en/function.parse-ini-file.php

Для анализатора файлов Bash INI также смотрите:

http://ajdiaz.wordpress.com/2008/02/09/bash-ini-parser/

для анализа файла ini из sh / bash

 #!/bin/bash #bash 4 shopt -s extglob while IFS="=" read -r key value do case "$key" in !(#*) ) echo "key: $key, value: $value" array["$key"]="$value" ;; esac done <"file" echo php -r myscript.php ${array["host"]} 

затем с PHP, используйте argv