
Узнайте, как написать базовый сценарий оболочки Bash. Хотя сценарии оболочки могут быть длинными, сложными сценариями, выполняющими сложные задачи, вы также можете научиться писать простой сценарий оболочки за 10 минут. Если вы умеете выполнять команды в командной строке, то научиться писать базовый сценарий Bash не составит труда.
Требования
- Облачный сервер под управлением Linux
- Базовое знакомство с командной строкой
Создайте файл
Перейдите в свой домашний каталог:
cd
Использование cd без каких-либо аргументов автоматически приведет вас в ваш домашний каталог.
Создайте каталог для тестовых скриптов:
mkdir myscripts
Перейдите в этот каталог:
cd myscripts
Создайте файл с именем myscript.sh и откройте его для редактирования:
nano hello
Первая строка любого сценария оболочки должна быть #!, за которой следует путь к оболочке, которую вы хотите использовать для сценария.
Поскольку мы будем писать этот сценарий для оболочки Bash, первой строкой файла будет #!
#!/bin/bash
Любая другая строка, начинающаяся с хэш-знака #, будет проигнорирована скриптом. Это позволит вам добавлять комментарии и заметки к вашему скрипту. После первой строки хорошо добавить несколько комментариев о цели сценария:
# A test script
Добавьте команду(ы) и сделайте ее исполняемой
Любую команду, которую вы выполняете из командной строки, можно поместить в сценарий оболочки. Это удобно для:
- Команды, которые вы часто используете.
- Длинных команд, особенно тех, которые используют много флагов.
- Команды, которые вы хотите, чтобы сервер выполнял автоматически, как задание cron.
- Команды, которые вы никогда не можете запомнить, и вам приходится каждый раз их искать.
Для этого примера мы будем использовать команду, которая выводит в командную строку слова «Hello world». Поместите в файл следующее:
echo "Hello world"
Сохраните и выйдите из файла.
Для запуска скрипт должен быть исполняемым. Дайте скрипту исполняемые права с помощью команды:
chmod 755 hello
Run the script
Чтобы запустить скрипт, просто вызовите его по пути к файлу. Поскольку вы находитесь в том же каталоге, что и скрипт, вы можете запустить его отсюда, набрав:
./hello
Вы можете запустить скрипт из любого места на сервере, набрав полный путь к файлу:
/home/[your username]/myscripts/hello
Добавьте скрипт в PATH
В отличие от сценария оболочки, большинство команд Linux не требуют ввода полного пути к файлу каждый раз, когда вы хотите их запустить. Это происходит потому, что эти скрипты находятся в вашем PATH.
PATH — это список каталогов, которые оболочка проверяет на наличие команды каждый раз, когда вы ее вводите. Вы можете посмотреть свой PATH с помощью команды:
echo $PATH
Это выведет список каталогов, которые находятся в вашем PATH:
jdoe@localhost:~$ echo $PATH
/home/jdoe/bin:/home/jdoe/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
Есть два способа добавить сценарий оболочки в PATH:
1. Переместить сценарий оболочки в каталог, который уже находится в PATH.
Вы можете переместить сценарий оболочки в любую из директорий, которые перечислены в ответ на команду echo $PATH. Лучше всего помещать свои личные сценарии оболочки в каталог /usr/local/bin:
sudo mv hello /usr/local/bin
Затем вы можете запустить сценарий из любого места с помощью команды:
hello
2. Добавьте каталог сценария оболочки в PATH
Вы можете добавить любой каталог в PATH с помощью команды:
export PATH=$PATH:[path to directory]
Например, если пользователь jdoe хочет добавить каталог /home/jdoe/myscripts в PATH, команда будет следующей:
export PATH=$PATH:/home/jdoe/myscripts
Затем вы можете запустить скрипт из любого места с помощью команды:
hello
Использование ввода и переменных
Ваши скрипты могут использовать переменные, и вы можете запрашивать ввод у пользователя. Это создает интерактивный сценарий, который позволяет вам предоставлять ему новую информацию при каждом запуске.
Давайте начнем с создания нового файла с именем greetme и откроем его для редактирования:
nano greetme
Как и раньше, убедитесь, что первая строка скрипта — это путь к оболочке:
#!/bin/bash
Добавьте комментарий:
# A simple script to experiment with user input
Первая строка сценария будет тем, что сценарий говорит, когда вы его вызываете:
echo -e "Hello user, please tell me which state you live in: "
Мы используем для этого echo -e, потому что -e позволяет команде обрабатывать специальные символы.
Следующая строка указывает скрипту, что он должен принять ваш ввод через приглашение:
read state
Последняя строка — это ответ скрипта:
echo "I have heard that $state is lovely this time of year."
Весь сценарий выглядит следующим образом:
#!/bin/bash
# A simple script to experiment with user input
echo -e "Hello user, please tell me which state you live in: "
read state
echo "I have heard that $state is lovely this time of year."
Сохраните и выйдите из файла. Затем сделайте его исполняемым с помощью команды:
chmod 755 greetme
Теперь вы можете запустить файл и посмотреть результаты:
jdoe@localhost:~/myscripts$ greetme
Hello user, please tell me which state you live in:
California
I have heard that California is lovely this time of year.