Mario Vanoni ha scritto:...
Ma mi meraviglio, la sintassi di AT&T UNIX SVR2/3,
usata da tanti guru dei tempi, e che uso tutt'ora, era:
- Codice: Seleziona tutto
if [ X${pippo} = Xy ]
Se pippo contiene caratteri "strambi",
con shell non bash, come finisce il test?
Ecco, appunto, io credo che quella fosse un vecchio modus operandi. C'è da dire che la bash è un po' particolare, ti permette di fare una espansione di parametro all'interno della quotatura "", magari e dico magari, se una volta questo non succedeva o se qualche shell ancora oggi non lo sopporta, allora non è possibile usare i quote per espandere una variabile e quindi ti tocca usare il vecchio stile x$var. Se poi guardi test(1) se ${pippo} non vale esattamente y il il test ritorna falso, inoltre se ${pippo} contiene uno spazio allora il test da errore dicendo che ci sono troppi parametri dato che se ne aspetta uno unario a destra e uno unario a sinistra dell'uguale, ed infatti l'errore iniziale è proprio quello, dato che pippo non è stata settata test(1) reclama l'assenza di un operatore unario a sinistra.
E ancora, per la bash si potrebbe usare il più veloce, poiché interno:
- Codice: Seleziona tutto
if [[ "$pippo" == "y" ]]; then ... else ... ; fi
Emanuele