Bash scripting: differenze tra le versioni

m
(possibili problemi con le espansioni di comando)
Riga 179: Riga 179:
Alcuni caratteri hanno un valore speciale per la shell, per consentirne le espansioni (di variabile, parametro, comando, percorso, ecc...). Di conseguenza se si intende scrivere un carattere speciale senza espanderlo, è necessario comunicarlo alla shell facendolo precedere da un carattere di escape '<code>\</code>' oppure racchiudendolo tra apici o virgolette (a seconda dell'espansione da disattivare).
Alcuni caratteri hanno un valore speciale per la shell, per consentirne le espansioni (di variabile, parametro, comando, percorso, ecc...). Di conseguenza se si intende scrivere un carattere speciale senza espanderlo, è necessario comunicarlo alla shell facendolo precedere da un carattere di escape '<code>\</code>' oppure racchiudendolo tra apici o virgolette (a seconda dell'espansione da disattivare).


Una stringa non racchiusa tra apici ha i seguenti caratteri speciali: <code>'</code>, <code>"</code>, <code>`</code>, <code>$</code>, <code>\</code>, <code>{</code>, <code>[</code>, <code>*</code>, <code>?</code>, <code>~</code>. Se non preceduti dal carattere di escape <code>\</code> possono, in base ai caratteri immediatamente successivi, essere espansi. Questa sezione non è esaustiva, ma consiglia qualche semplice accorgimento, in particolare riguardo l'uso di apici e virgolette per ridurre le necessità dell'escape.
Una stringa non racchiusa tra apici o tra virgolette ha i seguenti caratteri speciali: <code>'</code>, <code>"</code>, <code>`</code>, <code>$</code>, <code>\</code>, <code>{</code>, <code>[</code>, <code>*</code>, <code>?</code>, <code>~</code>. Se non preceduti dal carattere di escape <code>\</code> possono, in base ai caratteri immediatamente successivi, essere espansi. Questa sezione non è esaustiva, ma consiglia qualche semplice accorgimento, in particolare riguardo l'uso di apici e virgolette per ridurre le necessità dell'escape.


Inoltre gli spazi (comprendendo tabulazioni e a capo) non quotati vengono compressi:
Inoltre gli spazi (comprendendo tabulazioni e a capo) non quotati vengono compressi:
<pre>
<pre>
echo parola1   parola2  # stampa parola1 parola2 con un singolo spazio
echo parola1     parola2  # stampa parola1 parola2 con un singolo spazio
echo "parola1   parola2" # stampa parola1  parola2 mantenendo gli spazi  
echo "parola1     parola2" # stampa mantenendo gli spazi tra le due parole
</pre>
</pre>


3 581

contributi