The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Правка конфига nginx и отображение причины ошибки, universite (ok), 01-Авг-18, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


3. "Правка конфига nginx и отображение причины ошибки"  +/
Сообщение от Andrey Mitrofanov (?), 01-Авг-18, 14:13 
>>
 } 2>&1 

>>> В логи попадает только текст "Nginx config error!"
>>> Как бы в output генерить ругань проверки конфига от nginx.
> Все равно не понятно, зачем использовать секцию
 { } 2>&1 

По "в логи попадает только echo" я предположил, что:
1/ в логи попадает вывод на STDOUT
2/ "ругань проверки конфига" не попадает в STDOUT потому, что "идёт" на STDERR

Чтобы "положить" предполагаемый STDERR в "работающий" STDOUT, а предложил [попробовать] перенаправление ' 2>&1 '.

Чтобы не искать, вывод которой из кучи команд предположительно в том STDERR, я "взял" STDERR их всех, обернув "секцией"  ' { ... } '.

Всё это предположения, всё это писать длинно.  И, как выяснилось, непонятно.  Прошу прощения за то, что написал первое сообщение на непонятном Вам языке bash.

Ответить | Правка | Наверх | Cообщить модератору

4. "Правка конфига nginx и отображение причины ошибки"  +/
Сообщение от universite (ok), 01-Авг-18, 19:57 
Началось...

Я вот не сильно понимаю разницу между ( ) и { }.

Возможно вы знаете какие-то особенности использования { } внутри ( ) ?

Это имели ввиду?


(
...
{ nginx -t && service nginx reload || echo "Nginx config error!" } 2>&1
...
)


Но тогда имеем:

test4.sh: 27: Syntax error: ")" unexpected (expecting "}")

Ответить | Правка | Наверх | Cообщить модератору

5. "Правка конфига nginx и отображение причины ошибки"  +/
Сообщение от Andrey Mitrofanov (?), 01-Авг-18, 20:49 
> Началось...
> Я вот не сильно понимаю разницу между ( ) и { }.

В оснновном, с субшеллом -- без субшелла.

В не-основном - заморочки с разным "пониманием" ' ; ', ниже.

> Возможно вы знаете какие-то особенности использования { } внутри ( ) ?
> Это имели ввиду?

Я имел в виду то, что написал.  В основном то, что где-что с теми проверками, я не знаю.

>

 
> (
> ...
> { nginx -t && service nginx reload || echo "Nginx config error!"
> } 2>&1
> ...
> )
>

> Но тогда имеем:
> test4.sh: 27: Syntax error: ")" unexpected (expecting "}")

Это я знаю, почему, но никакого отношения к первому ответу оно не имеет.

Проблема вот в чём: перед ' ) ' точка с запяной не обязательна, а перед ' } ' она нужна.  Также перевод строки (примерно, как в моём первом ответе)  [во всяческих скобочных многосторчных конструкциях] [и без экранирования обратным слешом] равносилен ' ; '.

Поэтому:

или
( command1 && command2 || command3 ) 2>&1
, или
( command1 && command2 || command3; ) 2>&1
, или
{ command1 && command2 || command3; } 2>&1

, или
{
    command1 && command2 || command3
} 2>&1

, но не
{ command1 && command2 || command3 } 2>&1

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру