Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Выполнение команд и получение результатов их выполнения




При написании сценариев часто требуется перехватить результат выполнения команды для использования его в сценарии командной оболочки; т. е. выполнить команду и поместить ее вывод в переменную. Сделать это можно с помощью синтаксической конструкции $(команда).

Результат выполнения конструкции $ (команда) — просто вывод команды. Имейте в виду, что это не статус возврата команды, а просто строковый вывод, показанный далее.

#!/bin/sh

echo The current directory is $PWD

echo The current users are $(who)

exit 0

Поскольку текущий каталог — это переменная окружения командной оболочки, первая строка не нуждается в применении подстановки команды. Результат выпол­нения программы who, напротив, нуждается в ней, если он должен стать перемен­ной в сценарии.

Если вы хотите поместить результат в переменную, то можете просто присвоить его обычным образом whoisthere=$(who)

Возможность поместить результат выполнения команды в переменную сценария - мощное средство, поскольку оно облегчает использование существующих команд в сценариях и перехват результата их выполнения. Если необходимо преобразовать набор параметров, представляющих собой вывод команды на стандартное устройство вывода, и передать их как аргументы в про­грамму, команда xargs сможет это сделать.

Встроенные документы

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

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

 

Пример 15. Применение встроенного документа

#!/bin/sh

cat <<!BUILTdoc!

Это пример встроенного

документа для описания сценария

!BUILTdoc!

Пример 15 выводит на экран следующие строки

Это пример встроенного

документа для описания сценария

 

Отладка сценариев

При обноружении ошибки при выполнении сценария командная оболочка выводит на экран номер строки, содержащей ошибку. Если ошибка сразу не видна, нужно добавить несколько дополнительных команд echo для вывода значений переменных и протестировать фрагменты программного кода, вводя их в командной оболочке в интерактивном режиме. Основной способ отслеживания наиболее трудно выявляемых ошибок – использование отладочных опций командной оболочки.

Отладочные опции командной строки приведены в табл. 5.

 

Таблица 5. Отладочные опции командной строки

Опция Назначение
sh –n <сценарий> Только проверяет синтаксические ошибки
sh –v <сценарий> Выводит на экран команды перед их выполнением
sh –x <сценарий> Выводит на экран команды после обработки командной строки
sh –u <сценарий> Выдает сообщение об ошибке при использовании неопределенной переменной

 

 

МЕТОДИКА ВЫПОЛНЕНИЯ

1. Получить полный список ключей команды stat.

2. Вычислить факториал целого числа, вводимого с клавиатуры. Предусмотреть проверку правильности ввода аргумента.

3. Найти первые N чисел Фибоначчи, используя рекуррентное соотношение

Ai+1=Ai+Ai-1

Значения первых двух чисел и необходимое количество чисел N ввести с клавиатуры.

4. Написать и выполнить сценарии для решения индивидуальных задач, номер задачи определяется номером бригады:

  1. Найти суммарный объем выполняемых файлов в текущем каталоге.
  2. В текущем каталоге найти выполняемый файл наибольшего размера.
  3. Вывести имена файлов текущего каталога, начинающиеся на букву a или b, в которые можно записывать данные.
  4. В текущем каталоге найти имя файла, который был изменен позже всех. На экран вывести дату изменения и имя файла.
  5. Написать сценарий для проверки, имеются ли в двух подкаталогах, имена которых задаются первым и вторым параметрами сценария, файлы с одинаковыми именами. Количество файлов с одинаковыми именами и имена файлов вывести на экран.
  6. Для каждого подкаталога текущего каталога найти количество файлов. Вывести имена подкаталогов и количество файлов в этом каталоге.
  7. В текущем каталоге найти количество файлов, имеющих различные имена, но одинаковые размеры. Вывести на экран величину размера и имена файлов, имеющих данный размер.
  8. В текущем каталоге и его подкаталогах найти файлы, созданные в течение последней недели.
  9. Используя команду printf, написать сценарий для перевода введенного с клавиатуры целого положительного числа в восьмеричную и шестнадцатеричную системы счисления.

 

ОТЧЕТ О РАБОТЕ

Готовится в письменном виде один на бригаду. Содержание отчета:

1. Результаты выполнения заданий 1- 3 – тексты сценариев и результаты их выполнения

2. Результаты выполнения индивидуального задания для бригады - текст сценария и результаты его выполнения.

 

КОНТРОЛЬНЫЕ ВОПРОСЫ

 

  1. Назначение, создание и выполнение сценариев.
  2. Использование кавычек в командной строке.
  3. Переменные в bash.
  4. Перенаправление ввода-вывода и каналы
  5. Превращение сценария в исполняемый файл
  6. Команда test или [
  7. Оператор разветвления if
  8. Проверка выполнения нескольких условий (выполнение нескольких команд)
  9. Оператор выбора case
  10. Операторы цикла
  11. Команды break и continue - назначение, примеры использования
  12. Команда printf – назначение, отличия от языка С, примеры использования
  13. Встроенные документы.
  14. Отладка сценариев

 

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...