Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Управление системными ресурсами средствами shell-интерпретатора
Цель работы: о знакомиться с основами программирования на уровне командного языка Shell путём написания Shell-программ для работы с файловой системой.
Обычно в ОС UNIX доступны несколько интерпретаторов. Наиболее распространены Bourne-shell (или просто - shell), C-shell, Korn-shell. В идейном плане все эти интерпретаторы близки и в дальнейшем речь будет идти о стандартном Shell (/bin/sh).
Работая на командном языке, пользователь может вводить переменные, присваивать им значения, выполнять простые команды, строить составные команды, управлять потоком выполнения команд, объединять последовательность команд в процедуры (командные файлы). На уровне командного языка доступны такие свойства системы как соединение процессов через программный канал, направление стандартного ввода/вывода в конкретные файлы, синхронное и асинхронное выполнение команд.
Если указанный интерпретатору файл является текстовым и содержит команды командного языка (командный файл) и при этом имеет разрешение на выполнение (помечен "х"), Shell-интерпретатор интерпретирует и выполняет команды этого файла. Другой способ вызова командного файла - использование команды sh (вызов интерпретатора), в котором первым аргументом указывается имя командного файла.
Коротко перечислим средства группирования команд и перенаправления ввода/вывода:
· cmd1 arg...; cmd2 arg...;... cmdN arg... - последовательное выполнение команд;
· cmd1 arg... & cmd2 arg... &... cmdN arg... - асинхронное выполнение команд;
· cmd1 arg... && cmd2 arg... - зависимость последующей команды от предыдущей таким образом, что последующая команда выполняется, если предыдущая выдала нулевое значение;
· cmd1 arg... || cmd2 arg... - зависимость последующей команды от предыдущей таким образом, что последующая команда выполняется, если предыдущая выдала ненулевое значение;
· cmd > file - стандартный вывод направлен в файл file;
· cmd >> file - стандартный вывод направлен в конец файла file;
· cmd < file - стандартный ввод выполняется из файла file;
· cmd1 | cmd2 - конвейер команд, в котором стандартный вывод команды cmd1 направлен на стандартный вход команды cmd2.
Shell-переменные могут хранить строки текста. Правила формирования их имен аналогичны правилам задания имен переменных в обычных языках программирования. При необходимости присвоить Shell-переменной значение, содержащее пробелы и другие специальные знаки, оно заключается в кавычки. При использовании Shell-переменной в выражении ее имени должен предшествовать знак $. В последовательности символов те из них, которые составляют имя, должны быть выделены в { } или " ". Кроме того, интерпретатор Shell автоматически присваивает значения пяти своим переменным:
· $? - значение, возвращаемое последней выполняемой командой;
· $$ - идентификационный номер процесса Shell;
· $! - идентификационный номер фонового процесса, запускаемого интерпретатором Shell последним;
· $# - число аргументов, переданных в Shell;
· $– - флаги, переданные в Shell.
Для отмены специальных символов ($, |, пробел и т.д.) в Shell-программах существуют следующие правила:
· если символу предшествует обратная косая черта, то его специальный символ отменяется;
· отменяется специальный смысл всех символов, вошедших в последовательность, заключенную в апострофы.
При вызове Shell-программ им могут передаваться параметры. Соответствующие аргументы в Shell-программах идентифицируются $1, $2, $3 и т.д. Кроме того, переменная $0 соответствует имени выполняемой Shell-программы, а переменная $# - числу аргументов в команде.
Shell-интерпретатор дает возможность выполнять подстановку результатов выполнения команд в Shell-программах. Если команда заключена в одиночные обратные кавычки, то интерпретатор Shell выполняет эту команду и подставляет вместо нее полученный результат.
Наиболее важные команды для составления Shell-программ:
· команда echo выводит в выходной поток значения своих аргументов;
· команда expr выполняет арифметические действия над своими аргументами;
· команда eval обеспечивает дополнительный уровень подстановки своих аргументов, а затем их выполнение;
· команда test с соответствующими ключами проверяет необходимое условие;
· команда sleep служит для реализации задержки.
Программные конструкции Shell-программ:
Дата публикования: 2015-10-09; Прочитано: 480 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!