Файл настроек для bash и php

У меня есть проект, который включает в себя сценарии php и bash.

Я хочу передать все пользовательские настройки в файл "settings.conf". Следовательно, этот файл должен содержать переменные bash, а также переменные php.

Тем не менее, bash счел бы php-код довольно раздражающим, так как php не может справиться с bash-кодом.

Что было бы лучше, чтобы мой php-скрипт заботился только о php-части файла, а bash - только о bash-части?

Файл настроек может выглядеть так

### Settings-File

## php-settings
<$php
    $language    = "en";
    $url         = "http://foo.bar";
    $copyright   = "Copyleft License";
?>
## end php-settings

## bash-settings
    pathToCertainFile="/home/johndo/files/certainFile"
## end bash-settings

## EOF

2 ответа

Вместо того чтобы использовать один файл настроек, который будет анализироваться PHP и Bash, вы должны сохранить ваши настройки в формате, который имеет смысл для ваших настроек, и прочитать этот файл, используя оба сценария. Это не должно быть исполняемым. Это просто должно содержать ваши настройки.

settings.conf:

foo="this"
bar="that"
someint=123

Сценарий bash может выглядеть так:

#!/usr/local/bin/bash

eval `egrep '^[a-z]+=("[a-z0-9]+"|[0-9]+)$' settings.conf`

printf "foo=%s\nbar=%s\nsomeint=%s\n\n" "$foo" "$bar" "$someint"

Обратите внимание, что это вообще плохая идея eval, В bash есть и другие (лучшие) решения. Я сделал это для удобства.

И скрипт PHP может выглядеть так:

#!/usr/local/bin/php
<?php

$fh=fopen("settings.conf", "r");
while ($line=fgets($fh, 80)) {
  if (preg_match('/^[a-z]+=("[a-z0-9]+"|[0-9]+)$/', $line)) {
    $line_a=explode("=", $line);
    $conf[$line_a[0]]=$line_a[1];
  }
}

print_r($conf);

И эти примеры действительно работают:

ghoti@pc $ ./doit
foo=this
bar=that
someint=123

ghoti@pc $ ./doit.php 
Array
(
    [foo] => "this"
    [bar] => "that"
    [someint] => 123
)
ghoti@pc $ 

Speendo, почему вы хотите запускать свои задания cron, используя bash? Просто сохраните настройки в формате PHP и используйте PHP-скрипты, такие как ghoti's doit.php выше. PHP является совершенно правильным скриптовым языком для shell и cron.

Другие вопросы по тегам