bash — основи скриптингу

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

Практическое задание

  1. Создайте скрипт hello.sh с #!/bin/bash
  2. Добавьте переменные NAME и AGE, выведите их через echo
  3. Используйте read -p для ввода имени пользователя
  4. Используйте $@ и $# для вывода всех аргументов
  5. Вычислите $((10 * 5 + 3)) и выведите результат
  6. Сделайте скрипт исполняемым: chmod +x hello.sh
  7. Запустите: ./hello.sh arg1 arg2 arg3

Comments

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Related Post