Quando devi usare le virgolette nella configurazione?


24

Ho visto persone usare citazioni eccessive :

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

Ho visto persone che non usano virgolette :

add_header Access-Control-Allow-Origin *;

Entrambi funzionano bene per quanto ne so, in modo che quando si fa realmente necessario usare le virgolette?

Risposte:


29

La risposta esatta è "mai". Puoi citare o \-escape alcuni caratteri speciali come "" o ";" in stringhe (caratteri che renderebbero ambiguo il significato di un'affermazione), quindi

add_header X-MyHeader "Test String;"; 

funzionerebbe come

add_header X-MyHeader Test\ String\;;

In realtà: basta usare le virgolette :)


Modifica: come alcune persone amano nitpick: l'elenco non necessariamente completo di personaggi che possono rendere ambigua un'affermazione è secondo la mia comprensione della nginxsintassi di configurazione:

<space> " ' { } ; $ \ 

e potrebbe essere necessario fuggire $e \persino tra stringhe tra virgolette per evitare l'espansione variabile.

Sfortunatamente, non riesco a trovare un elenco completo e autorevole di tali personaggi nei documenti.


1
Non è sempre questione di nitpicking. Il file di configurazione potrebbe essere generato da un software di terze parti. Che potrebbe essere fornito con un modello e variabili da interpolare. Il software non può essere sicuro di cosa possano contenere le variabili, quindi idealmente dovrebbe sapere come citare qualsiasi stringa.
x-yuri,

5

Le virgolette sono richieste per i valori che contengono spazi (s) e / o alcuni altri caratteri speciali, altrimenti nginxnon li riconosceranno. Nel tuo esempio attuale le virgolette non fanno alcuna differenza, ma comunque la quotazione dei valori è una buona pratica / regola empirica


3
Quali sono l'elenco di caratteri speciali. C'è documentazione su questo e su come sfuggirli. Ho visto virgolette singole e doppie sulle stesse righe ...
Pork 'n' Bunny,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.