Запуск сценария bash

Здравствуйте, у меня такая проблема. У меня есть сценарии инициализации, и я должен запустить syslogd (busybox), поэтому у меня есть такой код:

...
"$__start_program" $OPTIONS
....

If I

echo "$__start_program $OPTIONS"

это печатает

/sbin/syslogd -s 512 -l 6 -L -O "/var/log/a.log"

Я вижу этот процесс в ps, но на самом деле системный журнал не запускается (в файле журнала нет сообщений о запуске, а logger вообще ничего не записывает в журнал). Но если я запускаю этот сценарий вручную из командной строки (с теми же аргументами), он работает нормально. Кто-нибудь может мне помочь с этой проблемой?


person Mike Minaev    schedule 25.08.2014    source источник
comment
Вокруг "/var/log/a.log" есть подозрительные цитаты, их, наверное, не должно быть.   -  person n. 1.8e9-where's-my-share m.    schedule 25.08.2014
comment
См. Также mywiki.wooledge.org/BashFAQ/050.   -  person tripleee    schedule 25.08.2014
comment
Не могли бы вы уточнить, что содержится в $__start_program и $OPTIONS?   -  person Tom Fenech    schedule 25.08.2014


Ответы (1)


Не используйте строку для хранения команд, они не для этого. Ссылка в комментариях содержит хорошее обсуждение потенциальных проблем, которые это может вызвать.

Из вопроса неясно, где начинается одна строка и заканчивается другая, но вы должны использовать функцию для достижения того, что вы пытаетесь сделать. Что-то вроде этого:

log_daemon() {
    param_s="$1"
    logfile="$2"
    /sbin/syslogd -s "$param_s" -l 6 -L -O "$logfile"
}

Затем вызовите его из своего скрипта, например:

log_daemon 512 /var/log/a.log
person Tom Fenech    schedule 25.08.2014