Kiedy musisz używać cudzysłowów w konfiguracji?

24

Widziałem, jak ludzie używają nadmiernych cytatów :

add_header 'Access-Control-Allow-Origin' '*';

Widziałem, że ludzie nie używają cytatów :

add_header Access-Control-Allow-Origin *;

Oba działają dobrze, o ile wiem, więc kiedy faktycznie musisz używać cudzysłowów?

Der Hochstapler
źródło

Odpowiedzi:

29

Dokładna odpowiedź brzmi „nigdy”. Możesz zacytować lub \-escape niektóre znaki specjalne, takie jak „” lub „;” w ciągach znaków (znaki, które mogłyby uczynić sens wyrażenia dwuznacznym), więc

add_header X-MyHeader "Test String;"; 

działałoby jak

add_header X-MyHeader Test\ String\;;

W rzeczywistości: użyj cytatów :)


Edycja: Jak niektórzy ludzie lubią nitpick: niekoniecznie pełna lista znaków, które mogą sprawić, że stwierdzenie będzie dwuznaczne, jest zgodne z moim rozumieniem nginxskładni config:

<space> " ' { } ; $ \ 

i może być konieczne ucieczka, $a \nawet w ciągach cytowanych, aby uniknąć rozszerzania zmiennej.

Niestety, nie mogę znaleźć pełnej i wiarygodnej listy takich znaków w dokumentacji.

Sven
źródło
1
Nie zawsze chodzi o nitpicking. Plik konfiguracyjny może zostać wygenerowany przez oprogramowanie innej firmy. Który może być wyposażony w szablon i zmienne do interpolacji. Oprogramowanie nie może mieć pewności, co mogą zawierać zmienne, dlatego idealnie powinien wiedzieć, jak cytować dowolny ciąg.
x-yuri
5

W przypadku wartości zawierających spacje i / lub niektóre inne znaki specjalne wymagane są cudzysłowy, w przeciwnym razie nginxich nie rozpoznamy. W obecnym przykładzie cytaty nie mają znaczenia, ale i tak cytowanie wartości jest dobrą praktyką / ogólną zasadą

użytkownik1700494
źródło
3
Jaka jest lista znaków specjalnych. Czy jest na to dokumentacja i jak ich uniknąć? Widziałem zarówno pojedyncze, jak i podwójne cytaty w tych samych wierszach ...
Pork 'n' Bunny