Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Мет_указ_по_СПО ч 1 Знакомство с Linux.doc
Скачиваний:
18
Добавлен:
11.04.2015
Размер:
325.12 Кб
Скачать

Синтаксис скрипта.

Скрипт представляет собой обычный текстовый файл, в котором записаны инструкции, понятные командному интерпретатору. Это могут быть команды, выражения shell или функции. Интерпретатор считывает эти инструкции из файла и последовательно их выполняет. Для этого пользователь, запускающий скрипт должен обладать правом на выполнение (х). Имя интерпретатора (у нас это bash) помещается в первой строке следующим образом:

#!/bin/bash

Комментарии в bash начинаются с символа ‘#’ и могут занимать как всю строку, так и располагаться после команды.

Команды функции и программы.

Все команды, которые вводятся в строке приглашения оболочки, относятся к одной из следующих категорий:

1) встроенные функции (встроенные команды);

2) функции оболочки, определенные пользователем;

3) внешние программы (внешние команды) и утилиты.

Команды, код которых находится в исполняемом файле оболочки, называются встроенными или внутренними. Наиболее важные из них ‑ cd, pwd, echo, kill, read, set, unset, setenv, export.Если набранное пользователем имя команды является именем встроенной команды, она немедленно будет исполнена без порождения нового процесса.

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

Пользователям, запускающим команды, нет необходимости знать, какого типа эти команды.

Пользователь может определить функцию командного интерпретатора и использовать ее как встроенную функцию shell, которая по синтаксису мало отличается от скрипта, но работает быстрее.

Синтаксис пользовательской функции:

name_function()

{

command

command

. . .

}

Пример пользовательской функции:

mcd()

{

cd $HOME

echo You are in home directory

}

Шаблоны

* любое имя файла (или его части), кроме начинающихся с символа ‘.’

[abc] любой символ из перечисленных (a или b или с)

? любой одиночный символ

Переменные

В командной строке или скрипте командного интерпретатора пользователь может определить и использовать переменные. Каждая переменная имеет имя и набор допустимых значений. Имя (идентификатор) переменной может содержать прописные и строчные буквы латинского алфавита, символ подчеркивания и цифры. Регистр букв в именах переменных различается. Имя переменной не должно начинаться с цифры. Значениями переменных являются строки символов:

...~>имя=значение

Использовать в любом месте командной строки значение любой переменной можно с помощью конструкции ${имя}, например:

...~>echo $var1

при интерпретации командной строки в нее будет подставлен текст, являющийся значением переменной.

Имя переменной может быть присвоено другой переменной:

...~>var1=$var2

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

...~>var1=’pwd’

...~>echo $var1

/home/alla

Более сложные синтаксические конструкции получения значения переменной:

$var

значение var; ничего если переменная не определена

${var}

то же, но отделяет имя переменной от последующих символов

${var:-string}

значение var, если определено; в противном случае – string; значение var не изменяется

${var:=string}

то же, но если переменная var не определена,Ю ей присваивается значение строки string

${var:?string}

если переменная var не определена, выводится строка string и интерпретатор прекращает работу; если строка string пуста, то выводится сообщение var: parametr not set

${var:+string}

строка string, если переменная var определена, в противном случае - ничего

Переменные в оболочках могут быть и массивами. Массив хранит значения нескольких строк (по числу элементов массива). В командах оболочки можно использовать либо значение всех элементов сразу, либо значение каждого элемента в отдельности. Массив задается как перечислением значений всех его элементов, так и заданием отдельных элементов:

#имя=(значение1 значение 2 . . . значение N) или #имя[индекс]=значение

здесь индекс – целочисленное выражение, вычисляемое до операции присваивания. В bash индекс должен быть неотрицательным, ограничений на размер массива нет, заданные элементы не обязательно должны следовать друг за другом.

Примеры:

...~>s=(‘Это нулевой эл-т’ первый ВТОРОЙ)

...~>echo ${s[0]}

Это нулевой эл-т

...~>echo ${s[2]}

ВТОРОЙ

declare –a mass #объявление массива

echo Input mass (elements separated by space)

read –a mass #ввод элементов

count=${#mass[@]} #число элементов массива

i=0

while [ “$i” –lt “$count” ]

do

echo ${mass[I]} #вывод массива по элементам

let “i=i+1”

done

echo ${mass[@]} #вывод массива по словам

Вывести на экран значения всех переменных (и функций) можно с помощью команды set без аргументов.