Исходники для этого - 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 {} \;
Насколько критичные эти замечания, судить не берусь. У меня давняя привычка использовать `` для консольных команд.
إرسال تعليق