ShellCheck

Совершенно не понятно, как я еще ни разу не рассказал про достаточно известный и популярный сервис ShellCheck. С его помощью можно проверять синтаксис shell скриптов. Cервис хостится в интернете по адресу https://www.shellcheck.net, но сам по себе это открытый проект, который вы можете развернуть у себя.

Исходники для этого - https://github.com/koalaman/shellcheck.

Много расписывать не буду, а сразу покажу на примере, как он работает. У меня есть типовой скрипт для бэкапа баз mysql, когда каждая база кладётся в отдельный архив.


#!/bin/bash

for i in `mysql -uroot -e'show databases;' | grep -v information_schema | grep -v Database`;
  do 
  /usr/bin/mysqldump --opt -v -uroot $i | /usr/bin/gzip -c > /web/sites/!backup-mysql/`date +%Y-%m-%d`-$i.sql.gz;
  done

/usr/bin/find /web/sites/!backup-mysql -type f -mtime +7 -exec rm {} \;

Проверяю его через ShellCheck. Получаю ряд замечаний. Ичсправляю:

#!/bin/bash

for i in $(mysql -uroot -e'show databases;' | grep -v information_schema | grep -v Database);
  do 
  /usr/bin/mysqldump --opt -v -uroot "$i" | /usr/bin/gzip -c > /web/sites/!backup-mysql/"$(date +%Y-%m-%d)"-"$i".sql.gz;
  done

/usr/bin/find /web/sites/!backup-mysql -type f -mtime +7 -exec rm {} \;

Насколько критичные эти замечания, судить не берусь. У меня давняя привычка использовать `` для консольных команд.

Отправить комментарий

Комментировать (0)

Новые Старые