У меня есть список скриптов, написанных в Bash, и теперь мне нужно их преобразовать в сценарии Shell. Я знаю, что bash - это расширенная реализация спецификации Shell, и поэтому я ищу некоторую спецификацию расширения, реализованного в Bash, а именно, что находится в Bash, который не является частью спецификации Shell, поэтому я мог бы просматривать мои скрипты и внести соответствующие изменения. Есть ли такой документ? В качестве альтернативы, любое другое предложение о том, как сделать преобразование, будет с благодарностью оценено.Конвертировать скрипты Bash в оболочку
ответ
Чтобы изменить скрипты Bash на POSIX compatible shell код, вы должны удалить bashisms. Хотя я не думаю, что есть какой-либо инструмент, который может надежно обрабатывать все bashisms можно начинать с checkbashisms
.
При использовании распределения, основанного на Debian, вы можете использовать checkbashisms команда, которая обеспечивается devscripts пакета.
Ниже приведен пример конкретной конструкции Баша (а bashism) highlighed от checkbashisms: ==
использования вместо =
в тесте.
$ cat b.sh #!/bin/sh VAR=foo if [ $VAR == bar ]; then echo 'bar!' fi
$ checkbashisms b.sh possible bashism in b.sh line 4 (should be 'b = a'): if [ $VAR == bar ]; then
Я просто попробовал checkbashisms с приведенным выше примером скрипта и не получил никаких результатов. любая идея, что я делаю неправильно? вот команда, которую я запускаю: $ checkbashisms test.sh, а затем cli не возвращает вывод, где test.sh содержит приведенный выше сценарий. – zuckermanori
@zuckermanori, вы использовали '/ bin/sh' вместо'/bin/bash' в shebang? –
да я сделал @ Christophe Vu-Brugier – zuckermanori
shellcheck инструмента (с притон из #!/bin/sh
) будет поймать много Баша-измов.
Любые, которые не были пойманы, вероятно, должны быть поданы как ошибки против проекта. Если они не являются запретительными для реализации, они должны быть добавлены в разумные сроки. Автор довольно отзывчив.
- 1. запускать скрипты csh из bash, менять оболочку по команде
- 2. POSIX и Bash скрипты
- 3. Вставить команду в оболочку Bash
- 4. Как изменить оболочку на тире от bash
- 5. Bash - безопасные скрипты
- 6. Запуск Bash скрипты в IPython
- 7. Go: Как породить оболочку bash
- 8. Bash конвертировать в pdf
- 9. Как мы можем конвертировать скрипты Loadrunner в скрипты JMeter
- 10. Как импортировать .profile в оболочку bash ipython?
- 11. скомпилировать всю оболочку bash в мое приложение
- 12. Использование пролога для вывода в оболочку bash
- 13. Скрипты лицензирования (Bash) под GPL?
- 14. Безопасный способ локализовать скрипты bash?
- 15. конвертировать скрипты oracle в совместимые с HSQLDB
- 16. конвертировать все сценарии jquery в live-скрипты
- 17. Maven build разлагает скрипты bash?
- 18. CGI-скрипты для команд bash
- 19. Изменить текущую оболочку в Lua
- 20. конвертировать cygwin bash в tcsh
- 21. Добавить whatis hooks в bash-скрипты
- 22. Как перенести скрипты из bash в тире?
- 23. Bash скрипты печатает цифры в начале выхода
- 24. BasH: запускать скрипты в фоновом режиме
- 25. Войдите на сайт и нажмите кнопку, используя оболочку bash.
- 26. Запустить оболочку bash параллельно и подождать
- 27. как сделать bash оболочку отображать красочный текст?
- 28. Очистить определенную строку файла через оболочку bash
- 29. Скомпилировать и выполнить java через оболочку bash
- 30. Как сбросить оболочку bash из Python?
[shellcheck] (http://shellcheck.net) с символом '#!/Bin/sh' shebang должен улавливать многие башизмы. Насколько велики эти сценарии? Насколько переносимы, именно они вам нужны? –
Что вы подразумеваете под «спецификацией оболочки»? Существует много разных оболочек, из которых 'bash' является одним. Вы говорите о совместимости с Bourne Shell ('sh'), в частности? – Phylogenesis
Он, вероятно, ссылается на [спецификацию оболочки POSIX] (http://pubs.opengroup.org/onlinepubs/9699919799/idx/xcu.html). – chepner