Bash scripting: differenze tra le versioni

m
(separata espansione di tilda e percorso, e maggiore chiarezza/uniformità nel resto)
Riga 322: Riga 322:
* <code>./*."${estensione}"</code> espande dopo aver espanso la variabile (contrariamente a ~), che può anche essere quotata;
* <code>./*."${estensione}"</code> espande dopo aver espanso la variabile (contrariamente a ~), che può anche essere quotata;
* <code>./*/</code> espande a tutte le directory non nascoste;
* <code>./*/</code> espande a tutte le directory non nascoste;
* <code>./.*</code> espande a tutti i file nascosti ('''ma anche a . e ..''').
* <code>./.*</code> espande a tutti i file nascosti (comprese "'''.'''" e "'''..'''", ossia directory corrente e superiore).


È importante sapere che, se nessun file combacia con un dato pattern, allora l'espansione '''non''' viene effettuata e i caratteri mantengono il loro valore letterale. Inoltre <code>*</code> e <code>?</code> sono caratteri validi per un nome di file, e un confronto sull'espansione ottenuta non sarebbe sempre risolutivo.
È importante sapere che, se nessun file combacia con un dato pattern, allora l'espansione '''non''' viene effettuata e i caratteri mantengono il loro valore letterale. E inoltre <code>*</code> e <code>?</code> sono caratteri validi per un nome di file.


L'esistenza di file ottenuti da tali espansioni va pertanto sempre controllata, per esempio con il costrutto <code>[ -e "$file" ]</code>:
L'esistenza di file ottenuti da tali espansioni va pertanto sempre controllata, per esempio con il costrutto <code>[ -e "$file" ]</code>:
3 581

contributi