Последнее обновление 21.01.2024 — Василий Иванов
Быстрые ссылки
- Как напечатать Hello World в Bash
- Создайте каталог, прочитав ввод
- Создание каталога с использованием аргументов командной строки
- Удаление файла с помощью функции Bash
- Создайте базовый калькулятор для арифметических вычислений
Сценарии Bash — один из самых популярных и доступных способов программирования вашего компьютера с Linux. Эти простые примеры сценариев помогут вам понять процесс и познакомят вас с основами программирования на Bash.
1. Как напечатать Hello World в Bash
Пример Hello World — отличный способ изучить любой язык программирования, и Bash не является исключением.
Вот как напечатать «Hello World» с помощью Bash:
- Откройте текстовый редактор и начните редактировать новый файл, содержащий следующие строки кода.
- Первая строка ваших сценариев Bash всегда должна выглядеть так:
#!/bin/bash
Команда Shebang (#!/bin/bash) необходима, поскольку оболочка использует ее для принятия решения о том, как запустить сценарий. В данном случае используется интерпретатор Bash.
- Любая строка, начинающаяся с символа #, является комментарием. Строка shebang — это особый случай, но для пояснения кода вы можете использовать свои собственные комментарии. Добавьте комментарий к строке 2, например:
# Print some text from a bash script
- Вы можете вывести результат на стандартный вывод, используя команду echo, за которой следует значение, которое вы хотите напечатать. Добавьте следующее в строку 3:
echo "Hello World"
- Сохраните скрипт, желательно с расширением .sh, например hello_world.sh. Расширение не является обязательным требованием, но это соглашение, которого полезно придерживаться.
- Чтобы запустить скрипт, сделайте файл исполняемым. Используйте команду chmod («изменить режим») вместе с аргументом +x («исполняемый файл») и именем вашего сценария оболочки:
chmod +x hello_world.sh
- Используйте эту команду для запуска сценария из его каталога:
./hello_world.sh
- Когда скрипт запустится, он выведет на ваш терминал текст «Hello World»:
2. Создайте каталог, прочитав входные данные.
Из ваших сценариев вы можете запустить любую программу, которую вы обычно запускаете в командной строке. Например, вы можете создать новый каталог из вашего скрипта с помощью команды mkdir.
- Начните с той же строки, что и раньше:
#!/bin/bash
- Запросите у пользователя имя каталога, используя команду echo, как и раньше:
echo "Enter new directory name:"
- Используйте встроенную команду чтения для получения вводимых пользователем данных. Единственный аргумент называет переменную, в которой оболочка будет хранить входные данные:
read newdir
- Если вам нужно использовать значение, хранящееся в переменной, добавьте к ее имени символ доллара ($). Вы можете передать содержимое входной переменной в качестве аргумента команде mkdir, чтобы создать новый каталог:
mkdir $newdir
- Когда вы запустите этот сценарий, он предложит вам ввести данные. Введите допустимое имя каталога, и вы увидите, что скрипт создаст его в вашем текущем каталоге:
3. Создайте каталог, используя аргументы командной строки
В качестве альтернативы интерактивному чтению ввода большинство команд Linux поддерживают аргументы. Вы можете указать аргумент при запуске программы, чтобы контролировать ее поведение.
В вашем скрипте вы можете использовать $1 для ссылки на специальную переменную, содержащую значение первого аргумента. $2 будет относиться ко второму аргументу и так далее.
- Создайте каталог с помощью команды mkdir из предыдущего примера. Однако на этот раз используйте встроенную переменную $1:
#!/bin/bash
mkdir $1 - Запустите скрипт, на этот раз передав выбранное вами имя нового каталога в качестве аргумента:
./arg_dir.sh Test
Вам может быть интересно, что произойдет, если вы запустите сценарий вообще без указания аргумента. Попробуйте и увидите; вы должны получить сообщение об ошибке, которое начинается с «использования: mkdir»:
Без каких-либо аргументов командной строки значение $1 будет пустым. Когда ваш сценарий вызывает mkdir, он не передает ему аргумент, и команда mkdir вернет эту ошибку. Чтобы избежать этого, вы можете проверить условие самостоятельно и представить более понятную ошибку:
- Как всегда, начните со строки шебанга:
#!/bin/bash
- Прежде чем вызывать mkdir, проверьте пустой первый аргумент (т. е. отсутствие аргументов). Вы можете сделать это, используя оператор if Bash, который запускает код на основе условия:
if ["$1" = ""]; then
- Если первый аргумент пуст, выведите сообщение об ошибке и выйдите из сценария:
echo "Please provide a new directory name as the first argument"
exit - Немного странное ключевое слово «fi» (перевернутое «if») сигнализирует об окончании оператора if в Bash:
fi
- Теперь ваш сценарий может продолжать работу, как и раньше, для обработки случая, когда присутствует аргумент:
mkdir $1
Когда вы запустите эту новую версию скрипта, вы получите сообщение, если забудете включить аргумент:
4. Удалить файл с помощью функции Bash
Если вы обнаружите, что повторяете один и тот же код, подумайте о том, чтобы обернуть его в функцию. Затем вы можете вызывать эту функцию в любое время.
Вот пример функции, которая удаляет данный файл.
- Начните со строки шебанга:
#!/bin/bash
- Определите функцию, написав ее имя, за которым следуют пустые круглые скобки и команды внутри фигурных скобок:
del_file() {
echo "deleting $1"
rm $1
}Затем вы можете вызвать функцию и передать ей имя файла, который нужно удалить:
del_file test.txt
Когда вы вызываете функцию, она устанавливает специальный $? значение со статусом завершения последней запущенной команды. Статус выхода полезен для проверки ошибок; в этом примере вы можете проверить, успешна ли команда rm:
if [ $? -ne 0 ]; then
echo "Sorry, could not delete the file"
fi
5. Создайте базовый калькулятор для арифметических вычислений.
Этот последний пример демонстрирует очень простой калькулятор. Запустив его, вы вводите два значения, а затем выбираете арифметическую операцию, которую нужно выполнить над ними.
Вот код Calc.sh:
#!/bin/bash
# Take operands as input
echo "Enter first number: "
read a
echo "Enter second number: "
read b
# Input type of operation
echo "Enter Arithmetic Operation Choice :"
echo "1. Addition"
echo "2. Subtraction"
echo "3. Multiplication"
echo "4. Division"
read choice
# calculator operations
case $choice in
1)
result=`echo $a + $b | bc`
;;
2)
result=`echo $a - $b | bc`
;;
3)
result=`echo $a \* $b | bc`
;;
4)
result=`echo "scale=2; $a / $b" | bc`
;;
esac
echo "Result: $result"
Обратите внимание на использование случая … esac, который в Bash является эквивалентом оператора switch в других языках. Он позволяет проверить значение (в данном случае переменную выбора) по сравнению с несколькими фиксированными значениями и запустить связанный код.
Этот сценарий использует команду bc для выполнения каждого расчета.