Strongbash

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
соглашения_кода:strongbash [09.04.2018 15:30]
admin Approved(admin 2018/04/09 15:32)
соглашения_кода: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
Строка 479: Строка 481:
   - Это усложняет чтение кода и понимание кода, файл сам по себе есть переменная и временная ссылка на него редко оправдана.\\   - Это усложняет чтение кода и понимание кода, файл сам по себе есть переменная и временная ссылка на него редко оправдана.\\
   - Плохо если приходится искать далеко вверху по коду, что это за переменная,​ и что там в этом файле.\\   - Плохо если приходится искать далеко вверху по коду, что это за переменная,​ и что там в этом файле.\\
-  - mktemp это тоже плохо так как бессмысленно,​ если оч надо tt=/​tmp/​NAME_$((RANDOM)).$$\\+  - mktemp это тоже плохо так как бессмысленно,​ если оч надо ​<code bash> 
 +tt=/​tmp/​NAME_$((RANDOM)).$$ 
 +</​code>​\\
   - Имя временного файла должно содержать в себе имя исполняемой программы и ее PID обязательно для разбора оставшихся после падения файлов.\\   - Имя временного файла должно содержать в себе имя исполняемой программы и ее PID обязательно для разбора оставшихся после падения файлов.\\
   - Если файлов останется от падения слишком много, то скрипт не сможет работать тк пиды заполнятся и это нормально мы об этом узнаем. Либо можно сделать rm -f перед работой   - Если файлов останется от падения слишком много, то скрипт не сможет работать тк пиды заполнятся и это нормально мы об этом узнаем. Либо можно сделать rm -f перед работой
Строка 646: Строка 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 "​$@"​ и 
Строка 803: Строка 807:
 ===== strongbash029 ===== ===== strongbash029 =====
  
-**Если мы берем stdout от функции мы обязаны прописать в первой строке set -e тк он снимается**+**Если мы берем stdout от функции мы обязаны прописать в первой строке ​Функции ​set -e тк он снимается** 
 + 
 ===== strongbash030 ===== ===== strongbash030 =====
 **Нельзя вызывать функцию внутри if fname и fname&&​ и fname||**\\ **Нельзя вызывать функцию внутри if fname и fname&&​ и fname||**\\
Строка 849: Строка 855:
  
 ===== strongbash036 todo ===== ===== strongbash036 todo =====
-Все аргументы нужно сохранять в глобальные переменные вида ARG_MYNAME=${1//​--myname=/​}\\+Все аргументы нужно сохранять в глобальные переменные вида ​<code bash> 
 +ARG_MYNAME=${1//​--myname=/​} 
 +</​code>​\\
 или sys:​parse_arg "​$@"​ или sys:​parse_arg "​$@"​
  
 +===== strongbash037 todo =====
 +Запрещено использовать echo Без кавычек
 +<​del>​echo $tmp</​del>​
 +
 +
 +===== strongbash038 todo =====
 +Нужно всегда использовать переменные и аргументы в кавычках.
 +<code bash>
 +Нельзя:​
 +if [ $1 = info ]; then
 +    echo $1
 +fi
 +
 +Нужно:
 +if [ "​$1"​ = '​info'​ ]; then
 +    echo "​$1"​
 +fi
 +</​code>​
 +
 + 
 ===== TODO добавить в инструкцию как программировать на баше ===== ===== TODO добавить в инструкцию как программировать на баше =====
 А пока читать коменты в http://​opencarbon.ru/​правила_разработки:​как_надо_делать:​разбор_crab_mysqldump2git А пока читать коменты в http://​opencarbon.ru/​правила_разработки:​как_надо_делать:​разбор_crab_mysqldump2git
Строка 874: Строка 902:
 {(rater>​id=1|name=Прочитал_соглашения_кода:​strongbash|type=vote|trace=user|tracedetails=1)} {(rater>​id=1|name=Прочитал_соглашения_кода:​strongbash|type=vote|trace=user|tracedetails=1)}
  
 +
 +~~OWNERAPPROVE~~