Back to: bash — основи скриптингу
0
bash — основы скриптинга
Bash — командная оболочка Linux и язык скриптов. Написание bash-скриптов автоматизирует рутинные задачи и системное администрирование.
Структура скрипта
#!/bin/bash
# Это комментарий
echo "Hello, World!"
# Сделать исполняемым
chmod +x script.sh
# Запустить
./script.sh
# Или через bash
bash script.sh
Переменные
# Присваивание (БЕЗ пробелов вокруг =)
NAME="Alice"
AGE=30
PI=3.14
# Использование
echo $NAME
echo "Меня зовут $NAME, мне $AGE лет"
# В фигурных скобках (для однозначности)
echo "${NAME}file"
echo "Файл: ${FILE_PATH}"
# Только чтение (константа)
readonly VERSION="1.0"
# Удалить переменную
unset NAME
Аргументы командной строки
#!/bin/bash
echo "Имя скрипта: $0"
echo "Первый аргумент: $1"
echo "Второй аргумент: $2"
echo "Все аргументы: $@"
echo "Количество аргументов: $#"
# Запуск:
./script.sh hello world 42
# Вывод:
# Имя скрипта: ./script.sh
# Первый аргумент: hello
# Второй аргумент: world
# Все аргументы: hello world 42
# Количество аргументов: 3
Ввод данных: read
# Чтение в переменную
echo "Введите имя:"
read NAME
echo "Привет, $NAME!"
# С подсказкой
read -p "Введите возраст: " AGE
# Молчаливый ввод (пароль)
read -s -p "Пароль: " PASS
# Чтение нескольких значений
read -p "Имя и фамилия: " FIRST LAST
# С таймаутом (секунды)
read -t 5 -p "Быстрый ввод (5 сек): " ANSWER
echo и printf
# echo
echo "Просто текст"
echo -n "Без переноса строки"
echo -e "С \t табом и \n новой строкой"
# printf (форматный вывод)
printf "Имя: %s, Возраст: %d\n" "Alice" 30
printf "Число: %.2f\n" 3.14159
Специальные переменные
$? # код завершения последней команды (0 = успех)
$$ # PID текущего процесса
$! # PID последнего фонового процесса
$0 # имя скрипта
$1-$9 # аргументы
$@ # все аргументы (каждый отдельно)
$* # все аргументы (одной строкой)
$# # количество аргументов
Арифметика
# Через $(( ))
RESULT=$((5 + 3))
echo $RESULT # 8
A=10
B=3
echo $((A + B)) # 13
echo $((A - B)) # 7
echo $((A * B)) # 30
echo $((A / B)) # 3
echo $((A % B)) # 1
echo $((A ** 2)) # 100
# Инкремент
((C++))
((C--))
Строки
# Длина строки
STR="Hello"
echo ${#STR} # 5
# Подстрока
echo ${STR:0:3} # Hel
echo ${STR:1:3} # ell
# Замена
echo ${STR/l/L} # HeLlo (первое)
echo ${STR//l/L} # HeLLo (все)
# Удаление по шаблону
FILE="archive.tar.gz"
echo ${FILE%.gz} # archive.tar (с конца)
echo ${FILE#*.} # tar.gz (с начала)
Комментарии
# Однострочный комментарий
# Многострочный (через heredoc)
: << "COMMENT"
Это многострочный
комментарий
COMMENT
Практическое задание
- Создайте скрипт
hello.shс#!/bin/bash - Добавьте переменные NAME и AGE, выведите их через echo
- Используйте
read -pдля ввода имени пользователя - Используйте
$@и$#для вывода всех аргументов - Вычислите
$((10 * 5 + 3))и выведите результат - Сделайте скрипт исполняемым:
chmod +x hello.sh - Запустите:
./hello.sh arg1 arg2 arg3


Добавить комментарий