Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Вопрос № 28 и вопрос № 32. Построение простейших команд.
Простейшая командная процедура (командный файл)
Пусть требуется перейти из домашнего каталога в каталог /bin,
распечатать его содержимое и вернуться назад.
Последовательность команд, которая решает эту задачу,
выглядит следующим образом:
которого необходимо распечатать, т.е. вызов командного файла должен выглядеть, например, так:
%batchl /bin
где аргумент /bin задает имя каталога.
Заменим имя каталога /bin в первой строке командного файла batchl на позиционную переменную $1:
%cd /bin %ls I |more %cd
Запишем эту последовательность команд в файл с именем batchl.
cd |
$1 |
|
Is |
-l |
| more |
cd |
batch1)
Теперь можно вызвать интерпретатор командного языка Shell и передать ему в качестве аргумента имя командного файла:
%sh batchl
Unix позволяет сделать из текстового файла batchl настоящую программу (команду). Для этого необходимо для файла batchl установить в правах доступа разрешение на выполнение:
%chmod +x batch 1
Теперь этот командный файл можно вызывать на выполнение так же. как и другие команды - по имени:
%batch 1
Модифицируем командный файл batchl так, чтобы можно было при вызове командного файла указывать имя каталога, оглавление
Позиционная переменная $1 является формальным параметром и интерпретатор командного языка заменит его на фактический параметр - имя каталога, заданное в качестве аргумента при вызове командной процедуры batchl.
В общем случае алгоритм обработки интерпретатором команд строк командной процедуры следующий:
6. Специальные параметры интерпретатора команд
Интерпретатор присваивает (автоматически) значения некоторым параметрам, обозначаемым одним из следующих символов: # - количество позиционных параметров; * - значения позиционных параметров в виде строки "$1 $2 $3
@ - значения позиционных параметров;
$ - идентификатор текущего процесса (Shell-процесса);
? - десятичное значение, возвращаемое последней выполненной
командой;
- - флаги, указанные при запуске Shell
! - идентификатор последнего запущенного процесса.