Litvek: лучшие книги недели
Топ книга - Счастлив по собственному желанию. 12 шагов к душевному здоровью [Андрей Владимирович Курпатов] - читаем полностью в LitvekТоп книга - Исчезновение венериан [Ли Дуглас Брэкетт] - читаем полностью в LitvekТоп книга - Легкий способ бросить пить [Аллен Карр] - читаем полностью в LitvekТоп книга - Пространство вариантов [Вадим Зеланд] - читаем полностью в LitvekТоп книга - Знамение пути [Мария Васильевна Семенова] - читаем полностью в LitvekТоп книга - Есть, молиться, любить [Элизабет Гилберт] - читаем полностью в LitvekТоп книга - Время всегда хорошее [Андрей Валентинович Жвалевский] - читаем полностью в LitvekТоп книга - В канун Рождества [Розамунда Пилчер] - читаем полностью в Litvek
Litvek - онлайн библиотека >> Автор неизвестен >> Linux и др. >> Bash-скрипты, руководство в 11 частях >> страница 3
$val2 ]

then

echo "$val1 is greater than $val2"

else

echo "$val1 is less than $val2"

fi

Вот результаты работы скрипта.


Bash-скрипты, руководство в 11 частях. Иллюстрация № 13

Сравнение строк, выведенное предупреждение

Обратите внимание на то, что скрипт, хотя и выполняется, выдаёт предупреждение:


./myscript: line 5: [: too many arguments

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


#!/bin/bash

val1=text

val2="another text"

if [ $val1 \> "$val2" ]

then

echo "$val1 is greater than $val2"

else

echo "$val1 is less than $val2"

fi

Теперь всё работает как надо.


Bash-скрипты, руководство в 11 частях. Иллюстрация № 14

Сравнение строк

Ещё одна особенность операторов «>» и «<» заключается в том, как они работают с символами в верхнем и нижнем регистрах. Для того, чтобы понять эту особенность, подготовим текстовый файл с таким содержимым:


Likegeeks

likegeeks

Сохраним его, дав имя myfile, после чего выполним в терминале такую команду:


sort myfile

Она отсортирует строки из файла так:


likegeeks

Likegeeks

Команда sort, по умолчанию, сортирует строки по возрастанию, то есть строчная буква в нашем примере меньше прописной. Теперь подготовим скрипт, который будет сравнивать те же строки:


#!/bin/bash

val1=Likegeeks

val2=likegeeks

if [ $val1 \> $val2 ]

then

echo "$val1 is greater than $val2"

else

echo "$val1 is less than $val2"

fi

Если его запустить, окажется, что всё наоборот — строчная буква теперь больше прописной.


Bash-скрипты, руководство в 11 частях. Иллюстрация № 15

Команда sort и сравнение строк в файле сценария

В командах сравнения прописные буквы меньше строчных. Сравнение строк здесь выполняется путём сравнения ASCII-кодов символов, порядок сортировки, таким образом, зависит от кодов символов.

Команда sort, в свою очередь, использует порядок сортировки, заданный в настройках системного языка.

Проверки файлов


Пожалуй, нижеприведённые команды используются в bash-скриптах чаще всего. Они позволяют проверять различные условия, касающиеся файлов. Вот список этих команд.


-d file Проверяет, существует ли файл, и является ли он директорией.

-e file Проверяет, существует ли файл.

-f file Проверяет, существует ли файл, и является ли он файлом.

-r file Проверяет, существует ли файл, и доступен ли он для чтения.

-s file Проверяет, существует ли файл, и не является ли он пустым.

-w file Проверяет, существует ли файл, и доступен ли он для записи.

-x file Проверяет, существует ли файл, и является ли он исполняемым.

file1 -nt file2 Проверяет, новее ли file1, чем file2.

file1 -ot file2 Проверяет, старше ли file1, чем file2.

-O file Проверяет, существует ли файл, и является ли его владельцем текущий пользователь.

-G file Проверяет, существует ли файл, и соответствует ли его идентификатор группы идентификатору группы текущего пользователя.


Эти команды, как впрочем, и многие другие рассмотренные сегодня, несложно запомнить. Их имена, являясь сокращениями от различных слов, прямо указывают на выполняемые ими проверки.

Опробуем одну из команд на практике:


#!/bin/bash

mydir=/home/likegeeks

if [ -d $mydir ]

then

echo "The $mydir directory exists"

cd $ mydir

ls

else

echo "The $mydir directory does not exist"

fi

Этот скрипт, для существующей директории, выведет её содержимое.


Bash-скрипты, руководство в 11 частях. Иллюстрация № 16

Вывод содержимого директории

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

Итоги


Сегодня мы рассказали о том, как приступить к написанию bash-скриптов и рассмотрели некоторые базовые вещи. На самом деле, тема bash-программирования огромна. Эта статья является переводом первой части большой серии из 11 материалов. Если вы хотите продолжения прямо сейчас — вот список оригиналов этих материалов. Для удобства сюда включён и тот, перевод которого вы только что прочли.


   1. Bash Script Step By Step — здесь речь идёт о том, как начать создание bash-скриптов, рассмотрено использование переменных, описаны условные конструкции, вычисления, сравнения чисел, строк, выяснение сведений о файлах.

   2. Bash Scripting Part 2, Bash the awesome — тут раскрываются особенности работы с циклами for и while.

   3. Bash Scripting Part 3, Parameters & options — этот материал посвящён параметрам командной строки и ключам, которые можно передавать скриптам, работе с данными, которые вводит пользователь, и которые можно читать из файлов.

   4. Bash Scripting Part 4, Input & Output — здесь речь идёт о дескрипторах файлов и о работе с ними, о потоках ввода, вывода, ошибок, о перенаправлении вывода.

   5. Bash Scripting Part 5, Sighals & Jobs — этот материал посвящён сигналам Linux, их обработке в скриптах, запуску сценариев по расписанию.

   6. Bash Scripting Part 6, Functions — тут можно узнать о создании и использовании функций в скриптах, о разработке библиотек.

   7. Bash Scripting Part 7, Using sed — эта статья посвящена работе с потоковым текстовым редактором sed.

   8. Bash Scripting Part 8, Using awk — данный материал посвящён программированию на языке обработки данных awk.

   9. Bash Scripting Part 9, Regular Expressions — тут можно почитать об использовании регулярных выражений в bash-скриптах.

   10. Bash Scripting Part 10, Practical Examples — здесь приведены приёмы работы с сообщениями, которые можно отправлять пользователям, а так же методика мониторинга диска.

   11. Bash Scripting Part 11, Expect Command — этот материал посвящён средству Expect, с помощью которого можно автоматизировать взаимодействие с интерактивными утилитами. В частности, здесь идёт речь об expect-скриптах и об их взаимодействии с bash-скриптами и другими программами.

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


Bash-скрипты, часть 2: циклы


В прошлый раз мы рассказали об основах программирования для bash. Даже то немногое, что уже разобрано, позволяет всем желающим приступить к автоматизации работы в Linux. В этом материале продолжим рассказ о bash-скриптах, поговорим об управляющих конструкциях, которые позволяют выполнять повторяющиеся действия. Речь идёт о циклах for и while, о методах работы с ними и о практических примерах их применения.

Циклы for


Оболочка bash поддерживает циклы for, которые позволяют организовывать перебор последовательностей значений. Вот какова базовая структура таких циклов:


for var in list

do

команды

done

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