Найти тему
Денис Алексеев

Bash - Самоучитель

Оглавление

1. Начало. Первая программа "Hello World!"

В созданной директории bash создаём файл b001.sh. Для этого открываем текстовый редактор vim, и набираем нашу программу:

#!/bin/bash
printf "Hello World!\n"
echo "Hello World!"

Так же для вывода текста на экран терминала можно использовать оператор echo, данный оператор по умолчанию переводит курсор на новую строку, а в операторе printf, необходимо использовать дополнительное форматирование в виде символа перевода новой строки \n.

2. Переменные

Добавим в нашу программу переменные. Переменные в bash начинаются с буквы или символа подчёркивания, например:

txt="First Text!"
_hello="Hello World!"

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

Для вывода переменной на экран используем символ "$":

echo $txt
printf "$_hello"

Для вывода с помощью оператора printf необходимо переменную поместить внутри двойных кавычек:

-2

Результат:

-3

Сейчас результат нашей программы выводиться на экран терминала, но вывод можно перенаправить в файл, для этого используем символ ">" после запускаемого файла, в нашем случае это b002.sh, далее знак больше ">" после которого указываем название файла, например test.st:

bash b002.sh > test.st

Если файла под названием test.st не было в директории, то он будет создан.

Итак командой bash b002.sh > test.st мы запустили файл и переадресовали вывод в файл test.st
Итак командой bash b002.sh > test.st мы запустили файл и переадресовали вывод в файл test.st

Итак командой bash b002.sh > test.st мы запустили файл и перенаправили вывод в файл test.st, далее командой ls -la мы вывели содержимое текущего каталога, видим что был создан файл test.st, его содержимое можем просмотреть командой cat test.st, и видим, что вывод нашей программы был сохранён в данном файле.

Если файл test.st уже существовал, то командой bash b002.sh > test.st его содержимое будет заменено на выводимое значение файла b002.sh, для того чтобы добавить данные в существующий файл используется двойной знак ">>":

bash b002.sh >> test.st
-5

Тогда значения будут добавляться в конец файла, как на картинке выше.

Так же в переменную можно сохранить результат выполнения команды в командной оболочке, для этого используют следующую комбинацию $(), например:

test=$(ls -la)
printf "$test"

-6

При запуске нашего файла, оболочка выполнит команду ls -la, результат сохранит в переменную test, и с помощью оператора printf выведет результат в терминал, как на картинке ниже:

-7

Передача параметров в скрипты:

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

bash b004.sh hello bash today

А считываются эти параметры внутри скрипта с помощью идентификаторов:

$# - количество переданных параметров в скрипт
$0 - имя скрипта
$1 - первый переданный параметр
$2 - второй
$3 - третий
$n - и так далее...

-8

Результат выполнения скрипта:

-9

Мы видим, что в скрипт было передано 3 параметра, название скрипта b004.sh и переданные параметры: hello bash today.