Quando fare script compatibili POSIX?
Vi chiederete quando occorre fare script compatibili POSIX e quando invece usare BASH.Ci sono tre principali motivi per usare script compatibili POSIX:
- Quando la portabilità è importante, se dovete fare uno script che vada praticamente ovunque (Solaris, *BSD, etc) è meglio rimanere compatibili POSIX (ove questo sia possibile senza un eccessivo lavoro).
- Per gli script di init (debian, ubuntu, Gentoo, etc) dato che debian e ubuntu usano di default dash come /bin/sh invece di bash e su Gentoo è possibile metterla da baselayout2 (o openrc).
- Negli script di autoconf, ./configure deve sempre essere compatibile con POSIX
Che cambia?
Partendo dal presupposto che uno sappia scriptare in bash cosa bisogna fare per rimanere compatibili con POSIX e che features di bash non possono essere usate?Le differenze più comuni sono:
[ $var1 == $var2 ]
questa forma funziona su bash, ma non è definita in POSIX. Il comando test (di cui la sintassi [ ] è un derivato) vuole solo = e non == per comparare due stringhe.[[ condizione ]]
questa è una forma avanzata di test che supporta globbing.Di solito si può riscrivere con[ condizione ]
.function foo()
function è totalmente inutile, basta levarlo.a=${b/foo}
oa=${b:0:1}
POSIX non supporta questo genere di operazioni avanzate su stringhe, usare sed e/o grep e/o cuttype -P programma
otype -p programma
usarecommand -v
owhich
(sconsiglio di usare which perché è un programma esterno).
No comments:
Post a Comment