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?
risposta
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.
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. –
- 1. Devo usare "test" o "[" "]" nella shell POSIX?
- 2. Lo standard POSIX `source` della shell?
- 3. test di conformità protocollo con tipi associati
- 4. Quota POSIX caratteri speciali della shell in uscita Python
- 5. Test script shell
- 6. Gli alias di shell sono conformi a POSIX?
- 7. Test di unità per script di shell
- 8. Conformità FIPS per il mio progetto Android
- 9. Ambito conformità CLS per NET assembly
- 10. HTML5 conformità Checker
- 11. Mancanza di conformità nello stato quando aggiungo costruito per i test interni in Test Flight. Come risolvere?
- 12. Intestazioni per le funzioni C POSIX
- 13. Espressione regolare Posix non-golosa
- 14. Semantica S_IRUSR in POSIX
- 15. Dove si trova attualmente l'implementazione 7 POSIX di Microsoft Windows?
- 16. Segnali e segnali POSIX
- 17. Qual è la shell POSIX equivalente di bash <<<
- 18. Conformità standard C++ nell'AVR-GCC
- 19. sono tubi posix leggeri?
- 20. Conformità database HIPAA Microsoft Azure
- 21. Come verificare se un output del comando non è vuoto nella shell POSIX?
- 22. Funzione POSIX per cercare PATH per un eseguibile?
- 23. Come interrompere le stringhe lunghe per la conformità PEP8?
- 24. Aggiornamento openssh su OS X con homebrew per conformità PCI
- 25. C: libreria di prove POSIX thread suite
- 26. Java Posix IPC Esiste un'API?
- 27. indipendente vs. assemblabili thread POSIX
- 28. SQLite per script di shell
- 29. POSIX regex alternativo non funzionante
- 30. come installare posix in php
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
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' –
Possibile duplicato: http://stackoverflow.com/questions/3668665/is-there-a-static-analysis-tool-like-lint- o-perlcritic-per-shell-scripts –