Назад | Перейти на главную страницу

Есть ли эффективный способ проверить, использует ли сценарий только функции POSIX?

Если бы я хотел быть уверен, что написанный мной сценарий максимально переносим и использует только POSIX особенности и нет, скажем, трепать функции, есть ли явный способ проверить это?

Очевидно, я мог бы попробовать запустить его в оболочке, отличной от моей обычной оболочки, но это только подтверждает, что мой сценарий ограничен функциями, поддерживаемыми этой оболочкой ... функциями, которые сами по себе могут выходить за рамки POSIX.

В POSIX режим БАШ, легко запустить:

bash --posix /PathToYourScript

чтобы войти в него и запустить там свой скрипт.

Это должно дать вам довольно четкое представление о том, является ли ваш сценарий POSIX- совместимы или нет.

Из того, что я читал, DASH, что является стандартным (sh символическая ссылка на dash) в Ubuntu / Debian и производных - очень строгий POSIX shell, который, возможно, стоит попробовать, потому что он даже строже, чем БАШ в POSIX Режим.

Альтернативный подход к Ответ Тима Шумахера было бы скопировать и вставить скрипт в ShellCheck.net, только изменяя Шебанг к #!/bin/shи внимательно изучаю вывод.

Этот подход может быть даже лучше, если вы что-то кодируете и ищете не только несоблюдение POSIX, но и другие ошибки и предложения. Вы будете особенно впечатлены, если будете использовать его ежедневно.


Конечно, можно:

bash --posix /PathToYourScript

Но по моему опыту, DASH, который является стандартным для Ubuntu / Debian и производных (sh символическая ссылка на dash), является очень строгим POSIX оболочка и даже строже, чем БАШ в POSIX Режим.