Как отлаживать скрипты на bash

Вы используете AdBlock. Этот сайт существует за счёт доходов от рекламы. Мы будем благодарны если вы отключите AdBlock на страницах нашего сайта.

()

Один из самых частов вопросов как среди администраторов, так и среди пользователей UNIX - как отлаживать скрипты на bash?

Отладка такого скрипта может быть не простым занятием. Есть различные способы выполнения этой задачи.

Метод #1 - использование опции -x

Просто запустите скрипт с опцией -x. Например:

$ bash -x script-name
$ bash -x domains.sh

Метод #2 - использование встроенного набора команд

Вы можете включать и выключать режим отладки используя следующие команды внутри скрипта:

set -x - Показывать командны и параметры, которые выполняются.

set -v - Показывать строки по мере их чтения.

Вы можете использовать их следующим образом:

#!/bin/bash
clear
# включаем режим отладки
set -x
for f in *
do
   file $f
done
# выключаем режим отладки
set +x
ls
# прочие команды

Так же для отладки вы можете заменить первую строчку скрипта на #!/bin/bash -xv.

Метод #3 - Написать отладочную функцию DEBUG

Добавьте переменную _DEBUG и присвойте ей значение on:

_DEBUG="on"

Затем добавьте следующую функцию в ваш скрипт:

function DEBUG()
{
[ "$_DEBUG" == "on" ] && $@ || :
}

Далее во всех местах где нужна отладка используйте примерно вот такой код:

DEBUG echo "File is $filename"

Или даже вот такой:

DEBUG set -x

... отлаживаемая часть скрипта

DEBUG set +x

Когда отладка скрипта будет закончена можно просто присвоить переменной _DEBUG значение off.

Рассмотрим вот такой скрипт:

#!/bin/bash
_DEBUG="on"
function DEBUG()
{
[ "$_DEBUG" == "on" ] && $@ || :
}

DEBUG echo 'Reading files'
for i in *
do
grep 'something' $i > /dev/null
[ $? -eq 0 ] && echo "Found in $i file" || :
done
DEBUG set -x
a=2
b=3
c=$(( $a + $b ))
DEBUG set +x
echo "$a + $b = $c"

Сохраним скрипт, выполним и посмотрим на результат выполнения:

Reading files
Found in xyz.txt file
+ a=2
+ b=3
+ c=5
+ DEBUG set +x
+ '[' on == on ']'
+ set +x
2 + 3 = 5

Теперь установим значение переменной _DEBUG в off и попробуем ещё раз выполнить скрипт. В результате мы увидим следующее:

Found in xyz.txt file
2 + 3 = 5

То что вы видели - пример простой и эффективной отладки скрипта.

Источник

Ключевые слова: bash, debug.

Подписаться на обновления: RSS-лента Канал в TamTam Telegram канал

Комментарии:

Anonymous 2011-10-25 00:08:20 (#)

Позновательно

Anonymous 2012-02-04 14:49:22 (#)

скрипты автозагрузки отлаживаются так же?

Anonymous 2012-04-22 15:23:23 (#)

интересно
Новый комментарий

Жирный текстКурсивный текстПодчёркнутый текстЗачёркнутый текстПрограммный кодСсылкаИзображение




© 2006-2025 Вадим Калинников aka MooSE
Политика конфиденциальности

apply for colorado tax id . ein