Strongbash
Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
соглашения_кода:strongbash [19.04.2018 06:04] admin [strongbash036 todo] |
соглашения_кода:strongbash [14.01.2020 09:26] (текущий) nikolay_carbonsoft |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
===== Соглашение по строгому bash ===== | ===== Соглашение по строгому bash ===== | ||
+ | TODO_OSV возможно выборочно проверять номера из https://github.com/koalaman/shellcheck | ||
===== strongbash001 ===== | ===== strongbash001 ===== | ||
Строка 101: | Строка 102: | ||
===== strongbash002 ===== | ===== strongbash002 ===== | ||
- | **Должен быть установлен set -eu или include ::carbon.sys** \\ | + | **Должен быть установлен set -eu или include crab_sys.sh** \\ |
**Категорически нельзя ставить <del>set -o pipefail</del> на весь файл см strongbash034_6** | **Категорически нельзя ставить <del>set -o pipefail</del> на весь файл см strongbash034_6** | ||
<WRAP center round important>ВНИМАНИЕ set -eu это самое главное правило, оно дает режим strong.\\ | <WRAP center round important>ВНИМАНИЕ set -eu это самое главное правило, оно дает режим strong.\\ | ||
Строка 307: | Строка 308: | ||
**В начале каждого файла должен быть echo START и USAGE, INFO, EXAMPLE\\ | **В начале каждого файла должен быть echo START и USAGE, INFO, EXAMPLE\\ | ||
В конце каждого файла должны быть echo SUCCESS и exit 0 :\\ ** | В конце каждого файла должны быть echo SUCCESS и exit 0 :\\ ** | ||
- | Для продвинутых разработчиков лучше использовать в начале скрипт: include ::carbon.sys | + | Для продвинутых разработчиков лучше использовать в начале скрипт: include crab_sys.sh |
<hidden Почему...> | <hidden Почему...> | ||
- exit 0 для того чтобы избежать случайный код возврата. | - exit 0 для того чтобы избежать случайный код возврата. | ||
- USAGE, INFO, EXAMPLE использования важен, чтобы программа могла жить в будущем и не была выброшена. | - USAGE, INFO, EXAMPLE использования важен, чтобы программа могла жить в будущем и не была выброшена. | ||
- echo START echo SUCCESS делает удобным использование и чтение консоли и логов. | - echo START echo SUCCESS делает удобным использование и чтение консоли и логов. | ||
- | - include ::carbon.sys позволит автоматически деалать echo START echo SUCCESS echo FAIL sys::usage "$@" # --help и показывает callstack при падении | + | - include crab_sys.sh позволит автоматически деалать echo START echo SUCCESS echo FAIL sys::usage "$@" # --help и показывает callstack при падении |
</hidden> | </hidden> | ||
<hidden Пример...> | <hidden Пример...> | ||
Строка 331: | Строка 332: | ||
exit 0 | exit 0 | ||
</code> | </code> | ||
- | <color #22b14c>Хорошо сделать функцию __exit(), если много exit 0 в программе</color> | + | <color #22b14c>Хорошо сделать функцию</color> <nowiki> |
+ | __exit()</nowiki><color #22b14c>, если много exit 0 в программе</color> | ||
<code bash> | <code bash> | ||
#!/bin/bash | #!/bin/bash | ||
Строка 354: | Строка 356: | ||
<code bash> | <code bash> | ||
#!/bin/bash | #!/bin/bash | ||
- | source ::carbon.sys | + | source crab_sys.sh |
sys::usage "$@" | sys::usage "$@" | ||
### --help Info: Автоматически создавать и коммитить все файлы в каталоге | ### --help Info: Автоматически создавать и коммитить все файлы в каталоге | ||
Строка 381: | Строка 383: | ||
- | <color #22b14c>Или для тихих файлов с carbon.sys:</color> | + | <color #22b14c>Или для тихих файлов с crab_sys.sh:</color> |
<code bash> | <code bash> | ||
__SILENT=TRUE | __SILENT=TRUE | ||
- | source ::carbon.sys | + | source crab_sys.sh |
### --help Info: Автоматически создавать и коммитить все файлы в каталоге | ### --help Info: Автоматически создавать и коммитить все файлы в каталоге | ||
### --help Usage: auto_git.sh [install] /var/www/html | ### --help Usage: auto_git.sh [install] /var/www/html | ||
Строка 648: | Строка 650: | ||
fi | fi | ||
</code> | </code> | ||
- | <color #22b14c>Хорошо при include ::carbon.sys</color> | + | <color #22b14c>Хорошо при include crab_sys.sh</color> |
<code bash> | <code bash> | ||
sys::usage "$@" и | sys::usage "$@" и | ||
Строка 805: | Строка 807: | ||
===== strongbash029 ===== | ===== strongbash029 ===== | ||
- | **Если мы берем stdout от функции мы обязаны прописать в первой строке set -e тк он снимается** | + | **Если мы берем stdout от функции мы обязаны прописать в первой строке Функции set -e тк он снимается** |
+ | |||
===== strongbash030 ===== | ===== strongbash030 ===== | ||
**Нельзя вызывать функцию внутри if fname и fname&& и fname||**\\ | **Нельзя вызывать функцию внутри if fname и fname&& и fname||**\\ | ||
Строка 859: | Строка 863: | ||
Запрещено использовать echo Без кавычек | Запрещено использовать echo Без кавычек | ||
<del>echo $tmp</del> | <del>echo $tmp</del> | ||
+ | |||
+ | |||
+ | ===== strongbash038 todo ===== | ||
+ | Нужно всегда использовать переменные и аргументы в кавычках. | ||
+ | <code bash> | ||
+ | Нельзя: | ||
+ | if [ $1 = info ]; then | ||
+ | echo $1 | ||
+ | fi | ||
+ | |||
+ | Нужно: | ||
+ | if [ "$1" = 'info' ]; then | ||
+ | echo "$1" | ||
+ | fi | ||
+ | </code> | ||
Строка 883: | Строка 902: | ||
{(rater>id=1|name=Прочитал_соглашения_кода:strongbash|type=vote|trace=user|tracedetails=1)} | {(rater>id=1|name=Прочитал_соглашения_кода:strongbash|type=vote|trace=user|tracedetails=1)} | ||
+ | |||
+ | ~~OWNERAPPROVE~~ | ||