Уникнення "BASH-Isms" в сценаріях оболонок


37

Чи існує інструмент, схожий на Perl :: Critic, який буде перевіряти ваші сценарії оболонки та вказувати на недоліки, проблеми з переносністю, використання нестандартних програм без резервних копій, використання амортизованих програм тощо?

Я розумію, що set -o posixвимкне використання не POSIX, але це не скаже мені те, що я хочу знати, як-от zsh індексація масивів оболонок, починаючи з 1, і bash, починаючи з 0, і зола взагалі не підтримує масиви.

Відповіді:


36

Є чекбашизми . У Debian він постачається як частина інструментів для обслуговування пакетів .

Перевірте свої сценарії під тире і шикарно . В обох є кілька не-POSIX конструкцій, але якщо ваш сценарій працює в обох, він, ймовірно, працює в більшості місць. (З застереженням, що складно перевірити типові сценарії оболонок, оскільки вони, як правило, мають багато кутових справ.)

Якщо ви плануєте портативні сценарії для вбудованих платформ Linux, протестуйте їх за допомогою BusyBox . Зауважте, що BusyBox може бути більш-менш обмежений, залежно від того, наскільки вбудована система ви хочете; цілком нормально мати сценарії, які покладаються на функцію, якої не мають деякі установки BusyBox.

Зауважте, що непереносимість походить не тільки від оболонки, а й із зовнішніх утиліт. OpenBSD і Solaris, як правило, мають утиліти з функціями POSIX і не набагато більше, тому вони хороші для тестування на портативність.

Ви хочете посилатися на специфікацію POSIX та інші ресурси, згадані в цій темі (особливо в посібнику з автоконтролю ); але це документація, вона не допомагає, якщо ви використовуєте функцію випадково.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.