6 999
contributi
S3v (discussione | contributi) mNessun oggetto della modifica |
|||
(Una versione intermedia di uno stesso utente non è mostrata) | |||
Riga 1: | Riga 1: | ||
{{ | {{Bash scripting}} | ||
__TOC__ | |||
Alcuni caratteri hanno un valore speciale per la shell, per consentire le espansioni o determinati costrutti. Di conseguenza se si intende scrivere il carattere per il suo valore letterale, è necessario comunicarlo alla shell facendolo precedere da un carattere di escape <code>\</code> oppure racchiudendolo tra apici o virgolette. | Alcuni caratteri hanno un valore speciale per la [[shell]], per consentire le espansioni o determinati costrutti. Di conseguenza se si intende scrivere il carattere per il suo valore letterale, è necessario comunicarlo alla shell facendolo precedere da un carattere di escape <code>\</code> oppure racchiudendolo tra apici o virgolette. | ||
Una stringa non racchiusa tra apici o tra virgolette ha i seguenti caratteri speciali: <code>$ ' ` " \ { } [ ] * ? ~ & ; ( ) < > | #</code> | Una stringa non racchiusa tra apici o tra virgolette ha i seguenti caratteri speciali: <code>$ ' ` " \ { } [ ] * ? ~ & ; ( ) < > | #</code> | ||
Riga 34: | Riga 34: | ||
</pre> | </pre> | ||
==Racchiudere tra apici== | == Racchiudere tra apici == | ||
Con gli apici (apostrofi) si riducono i caratteri speciali a uno soltanto, lo stesso apice, rappresentando la stringa per il suo solo valore letterale e impedendo tutte le espansioni: | Con gli apici (apostrofi) si riducono i caratteri speciali a uno soltanto, lo stesso apice, rappresentando la stringa per il suo solo valore letterale e impedendo tutte le espansioni: | ||
<pre>printf %s\\n '$PATH "" \ `ls ..` \$HOME ~ * .[a-z]*' # stampa la stringa tra apici, letteralmente</pre> | <pre>printf %s\\n '$PATH "" \ `ls ..` \$HOME ~ * .[a-z]*' # stampa la stringa tra apici, letteralmente</pre> | ||
Riga 41: | Riga 41: | ||
<pre>printf %s\\n 'L'\''albero di... ' # stampa "L'albero di..." (un apice non può essere racchiuso tra apici)</pre> | <pre>printf %s\\n 'L'\''albero di... ' # stampa "L'albero di..." (un apice non può essere racchiuso tra apici)</pre> | ||
==Racchiudere tra $'...'== | == Racchiudere tra $'...' == | ||
Con '''bash''' (non ''POSIX'') una stringa racchiusa tra <code>$'...'</code> non può essere espansa in nessun modo, come se fosse racchiusa tra apici. Il carattere <code>\</code> resta un carattere di escape, quindi è possibile inserire un apice nella stringa facendolo precedere da <code>\</code> e dev'essere preceduto dal carattere di escape anche ogni <code>\</code> da stampare letteralmente. | Con '''bash''' (non ''POSIX'') una stringa racchiusa tra <code>$'...'</code> non può essere espansa in nessun modo, come se fosse racchiusa tra apici. Il carattere <code>\</code> resta un carattere di escape, quindi è possibile inserire un apice nella stringa facendolo precedere da <code>\</code> e dev'essere preceduto dal carattere di escape anche ogni <code>\</code> da stampare letteralmente. | ||
Riga 65: | Riga 65: | ||
È un metodo molto meno diffuso rispetto a racchiudere tra apici e virgolette, perché non derivato da '''sh''' (''POSIX''). È in genere sconsigliabile utilizzarlo, se non per assegnare caratteri di escape (a capo o tabulazioni) a una variabile. | È un metodo molto meno diffuso rispetto a racchiudere tra apici e virgolette, perché non derivato da '''sh''' (''POSIX''). È in genere sconsigliabile utilizzarlo, se non per assegnare caratteri di escape (a capo o tabulazioni) a una variabile. | ||
==Quotare (tra virgolette)== | == Quotare (tra virgolette) == | ||
Racchiudere tra virgolette ogni stringa è raccomandabile, anche se non sempre necessario, così da ridurre il numero di caratteri speciali a cui pensare, permettendo allo stesso tempo l'espansione sicura delle variabili e dei comandi. I soli caratteri speciali rimasti sono <code>$</code>, <code>`</code> (ma non l'apice), <code>"</code> e <code>\</code>, che devono essere preceduti dal carattere di escape <code>\</code>. | Racchiudere tra virgolette ogni stringa è raccomandabile, anche se non sempre necessario, così da ridurre il numero di caratteri speciali a cui pensare, permettendo allo stesso tempo l'espansione sicura delle variabili e dei comandi. I soli caratteri speciali rimasti sono <code>$</code>, <code>`</code> (ma non l'apice), <code>"</code> e <code>\</code>, che devono essere preceduti dal carattere di escape <code>\</code>. | ||
contributi