2015-02-22 13 views
7

Come posso testare uno script di shell per verificare che sia conforme a POSIX? Ho una vasta serie di script scritti per varie versioni di Bash e forse altre shell. Mi piacerebbe essere in grado di determinare quali sono pienamente conformi a POSIX e quali no. Idealmente, mi piacerebbe trovare qualcosa come lint ma per gli script di shell.Test per conformità shell POSIX?

+1

Sebbene non faccia alcuna richiesta per verificare la conformità completa di POSIX, uno script comunemente usato su queste linee è ['checkbashisms'] (http://sourceforge.net/projects/checkbaskisms/). Verifica e genera report sulla sintassi non portatile. – John1024

+1

Usa #!/Bin/ksh come predefinito, così eviterai cose che sono più facili in bash. È solo un inizio, devi anche saltare i miglioramenti di Linux come 'sed -i' –

+0

Possibile duplicato: http://stackoverflow.com/questions/3668665/is-there-a-static-analysis-tool-like-lint- o-perlcritic-per-shell-scripts –

risposta

2

Non è possibile verificare staticamente se uno script è conforme a POSIX perché le differenze non sono limitate alle modifiche di sintassi e alcune differenze modificano semplicemente il modo in cui alcuni comandi si comportano. Questo link descrive le differenze tra bash e lo standard POSIX.

Tuttavia, è possibile controllare esplicitamente gli script in esecuzione quindi con bash --posix ./your_script.sh o utilizzando set -o posix al loro interno.

+0

La modalità conforme a POSIX di Bash non è purtroppo conforme a POSIX. Vedi https://tiswww.case.edu/php/chet/bash/POSIX e la fine dell'URL che hai pubblicato. Per lo meno, è anche necessario abilitare l'opzione 'xpg_echo' per ottenere il comportamento "echo" conforme a POSIX. Ci sono anche altre cose. Suggerisco di utilizzare dash per il test di conformità posix. –