Su: Protezione [Contenuti][Indice]
Sebbene questo Documento in generale si preoccupi solo di sistemi POSIX e della shell POSIX, il problema che stiamo per vedere emerge abbastanza spesso presso parecchi utenti, e per questo ne parliamo.
Le “shell” nei sistemi Microsoft Windows usano il carattere doppio apice per protezione, e rendono difficile o impossibile inserire un carattere doppio apice letterale in uno script scritto su una riga di comando. L’esempio che segue, per il quale ringraziamo Jeroen Brink, mostra come proteggere i doppi apici, con questo script di una sola riga, che stampa tutte le righe di un file, racchiudendole tra doppi apici:
{ print "\"" $0 "\"" } file
In una riga di comando in ambiente MS-Windows lo script di una riga mostrato sopra può essere eseguito immettendo:
gawk "{ print \"\042\" $0 \"\042\" }" file
In questo esempio, lo ‘\042’ è il codice ottale che rappresenta un
doppio apice; gawk
lo trasforma in un carattere doppio apice
per poi scriverlo in output con l’istruzione print
.
In ambiente MS-Windows proteggere i doppi apici richiede questo espediente perché occorre usare delle barre inverse per proteggere i doppi apici, ma le barre inverse non sono protette nella solita maniera; in effetti le barre inverse vanno raddoppiate o no a seconda che siano o non siano seguite da un doppio apice. La regola in ambiente MS-Windows per racchiudere tra doppi apici una stringa è la seguente:
Quindi, per racchiudere fra doppi apici lo script di una riga ‘{ print "\"" $0 "\"" }’ del precedente esempio, si dovrebbe fare così:
gawk "{ print \"\\\"\" $0 \"\\\"\" }" file
Comunque, usare la notazione ‘\042’ invece che ‘\\\"’ rimane sempre possibile, ed é di più facile lettura, perché le barre inverse che non sono seguite da un doppio apice non hanno bisogno di essere duplicate.
Su: Protezione [Contenuti][Indice]