Использование кавычек для отмены значения символа пробел

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

Создание простых программ shell и их выполнение

С помощью текстового редактора создайте файл dl и введите в него строки:

pwd<ENTER>

ls<ENTER>

echo This is the end of the shell program.<ENTER>

Теперь вы имеете программу shell. Вы можете отобразить это содержимое файла с помощью cat:

cat dl<ENTER>

Выполнить shellпрограмму вы можете с помощью команды sh. Введите:

sh dl<ENTER>

С помощью команды chmod вы можете сделать файл исполняемым:

chmod u+x dl<ENTER>

Обратите внимание, что chmod включает разрешение на выполнение (+x) для пользователя (u). Теперь dl является исполняемой программой. Попытайтесь выполнить ее. Введите: dl<ENTER>

При выполнении данного примера вызвать dl не удастся. Дело в том, что в пути поиска не указан текущий каталог. Исправить положение можно двумя способами: дополнить PATH (переменная, определяющая имя пути, используемое shell для нахождения команд) символом, или вызвать указанную команду с указанием полного пути доступа:

PATH=”PATH: .”; dlвариант 1

./dlвариант 2

Ограничения при именовании программ shell

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

Переменные

Shell программы манипулируют с переменными. Такими как:

· позиционные параметры;

· специальные параметры;

· именованные переменные.

Позиционные параметры

Позиционные параметры являются переменными в shell программе. Их значение устанавливается из аргументов, указанных в командной строке, которая вызывает программу. Позиционные параметры нумеруются, и на них идет ссылка символами $:$1, $2, $3 и т.д. Shell программа может использовать до 9 позиционных параметров. Если shell программа вызывается с помощью командной строки наподобие:

shell.prog pp1 pp2 pp3 pp4 pp5 pp6 pp7 pp8 pp9 <ENTER>

то позиционному параметру $1 в программе присваивается значение pp1, $2 - значение pp2 и т.д. во время вызова программы. Чтобы практически рассмотреть это замещение позиционных параметров сделайте следующее. Команда who перечисляет всех пользователей, в данный момент зарегистрированных в системе. Можем создать простую программу whoson, которая будет сообщать, работает ли в настоящий момент конкретный пользователь. Введем в файл whoson командную строку: who | grep $1<ENTER>

Команда who перечисляет всех текущих пользователей системы, а команда grep осуществляет поиск строки, содержащей значение, соответствующее позиционному параметру $1. Теперь подставим конкретное имя в качестве аргумента в файле whoson, например, user1.

Если указанный пользователь user1 не зарегистрирован в данный момент в системе, grep завершится неудачно и whoson не будет ничего выводить на экран.

Специальные параметры

Наиболее важный из них : $?

Большинство команд shell возвращает коды, которые указывают, успешно ли завершилась команда. Если возвращаемое значение 0 (ноль), то команда выполнилась успешно. Коды возврата не печатаются автоматически, но их можно получить как значение этого параметра.

Именованные переменные

Переменная – это область данных, обладающая именем и содержимым. Имя может состоять только из букв и цифр и не может начинаться с цифры. Содержимое – любой текст. Значение именованной переменной вы присваиваете сами следующим образом:

name_variable=value<ENTER>

Обратите внимание, что ни слева, ни справа от знака равенства нет пробелов.

В следующем примере var1 - это имя переменной, а myname - значение строки символов, которое присваивается переменной:

Пример

var1=myname<ENTER>

Знак $ используется перед именем переменной в shell программе для ссылки на значение этой переменной. Если взять предыдущий пример, то ссылка $var1 говорит shell, что нужно заменить любую встретившуюся строку символов $var1 на значение myname.

Переменные могут хранить целые команды:

ls2=’ls –l’

$ ls2

Значение этих переменных вы можете определить двумя способами. Первый, вы можете ввести: echo $variable_name

Система распечатает значение переменной variable_name. Второй способ: вы можете воспользоваться командой env для распечатки значений всех определенных переменных в shell. Для этого введите команду env и система выдаст список всех имен переменных и их значения.

Удаление переменных

Переменные сохраняются недолго. По завершении shell они теряются, поэтому уничтожать их вручную, как правило, не требуется. Если же возникла такая необходимость, используйте команду unset. Синтаксис: unset [имя _ переменной…]

Наши рекомендации