Онлайн-рабочие станции OnWorks Linux и Windows

Логотип

Бесплатный хостинг в Интернете для рабочих станций

<Предыдущая | Содержание: | Следующая>

трассировка

Ошибки часто представляют собой случаи неожиданного логического потока в сценарии. То есть части скрипта либо никогда не выполняются, либо выполняются в неправильном порядке или в неправильное время. Чтобы увидеть реальный ход программы, мы используем технику, называемую трассировка.

Один из методов трассировки включает размещение информационных сообщений в сценарии, которые отображают место выполнения. Мы можем добавлять сообщения в наш фрагмент кода:



echo "подготовка к удалению файлов"> & 2

если [[-d $ dir_name]]; тогда, если cd $ dir_name; тогда

echo "удаление файлов"> & 2

rm *

еще

echo "не могу перейти к '$ dir_name'"> & 2 выйти 1

фи еще

echo "такого каталога нет: '$ dir_name'"> & 2 exit 1

fi

echo "удаление файла завершено"> & 2

echo "подготовка к удалению файлов"> & 2

если [[-d $ dir_name]]; тогда, если cd $ dir_name; тогда

echo "удаление файлов"> & 2

rm *

еще

echo "не могу перейти к '$ dir_name'"> & 2 выйти 1

фи еще

echo "такого каталога нет: '$ dir_name'"> & 2 exit 1

fi

echo "удаление файла завершено"> & 2


Мы отправляем сообщения стандартной ошибке, чтобы отделить их от обычного вывода. Мы также не делаем отступы в строках, содержащих сообщения, чтобы легче было найти, когда пора их удалить.

Теперь при выполнении скрипта можно увидеть, что удаление файла выполнено:



[me @ linuxbox ~] $ deletion-script подготовка к удалению файлов удаление файлов

удаление файла завершено [me @ linuxbox ~] $

[me @ linuxbox ~] $ deletion-script подготовка к удалению файлов удаление файлов

удаление файла завершено [me @ linuxbox ~] $


bash также предоставляет метод трассировки, реализованный с помощью параметра -x и команды set с параметром -x. Используя наш предыдущий сценарий устранения неполадок, мы можем активировать трассировку для всего сценария, добавив параметр -x в первую строку:


#! / bin / bash -x

#! / bin / bash -x

Отладка


# проблема: скрипт для демонстрации типичных ошибок number = 1

если [$ number = 1]; тогда

echo "Число равно 1." еще

echo "Число не равно 1."

fi

# проблема: скрипт для демонстрации типичных ошибок number = 1

если [$ number = 1]; тогда

echo "Число равно 1." еще

echo "Число не равно 1."

fi


При выполнении результаты выглядят так:



[я @ linuxbox ~] $ беда

+ число = 1

+ '[' 1 = 1 ']'

+ echo 'Число равно 1.' Число равно 1.

[я @ linuxbox ~] $ беда

+ число = 1

+ '[' 1 = 1 ']'

+ echo 'Число равно 1.' Число равно 1.


При включенной трассировке мы видим команды, выполняемые с примененными расширениями. Ведущие знаки плюса указывают на отображение кривой, чтобы отличить их от строк обычного вывода. Знак плюс - это символ по умолчанию для вывода трассировки. Он содержится в PS4 (строка приглашения 4) переменная оболочки. Содержимое этой переменной можно изменить, чтобы сделать подсказку более полезной. Здесь мы изменяем содержимое переменной, чтобы включить текущий номер строки в сценарий, в котором выполняется трассировка. Обратите внимание, что одинарные кавычки необходимы для предотвращения раскрытия до фактического использования подсказки:



[я @ linuxbox ~] $ экспорт PS4 = '$ LINENO +'

[я @ linuxbox ~] $ беда

5 + число = 1

7 + '[' 1 = 1 ']'

8 + echo 'Число равно 1.' Число равно 1.

[я @ linuxbox ~] $ экспорт PS4 = '$ LINENO +'

[я @ linuxbox ~] $ беда

5 + число = 1

7 + '[' 1 = 1 ']'

8 + echo 'Число равно 1.' Число равно 1.


Чтобы выполнить трассировку выбранной части скрипта, а не всего скрипта, мы можем использовать набор команда с -x опции:


#! / Bin / Баш

# проблема: скрипт для демонстрации типичных ошибок number = 1

#! / Bin / Баш

# проблема: скрипт для демонстрации типичных ошибок number = 1



set -x # Включить трассировку

если [$ number = 1]; тогда

echo "Число равно 1." еще

echo "Число не равно 1."

fi

set + x # Отключить трассировку


set -x # Включить трассировку

если [$ number = 1]; тогда

echo "Число равно 1." еще

echo "Число не равно 1."

fi

set + x # Отключить трассировку


Мы используем набор команда с -x возможность активировать трассировку и +x возможность деактивировать трассировку. Этот метод можно использовать для изучения нескольких частей сценария устранения неполадок.


Лучшие облачные вычисления для ОС в OnWorks: