Страница 1 из 1

Основы синтаксиса Bash #!/bin/bash

Добавлено: 26 мар 2025, 10:04
ya
Циклы

Код: Выделить всё

#!/bin/bash

for i in {1..5}; do
    echo "Это итерация номер $i"
done
Функции

Код: Выделить всё

#!/bin/bash

function greet {
    echo "Привет, $1!"
}

greet "Иван"
Работа с файлами и каталогами

Код: Выделить всё

#!/bin/bash

if [ -f "myfile.txt" ]; then
    echo "Файл существует"
fi

if [ -d "mydir" ]; then
    echo "Каталог существует"
fi
Ошибки и отладка
Добавьте set -e в начало скрипта, чтобы он прекращал выполнение при обнаружении ошибки.
set -e # Скрипт завершится, если любая команда вернет ненулевой код
Для отладки используйте set -x для вывода команд до их выполнения.

Код: Выделить всё

#!/bin/bash

set -e
set -x

# Ваш код здесь
Чтение пользовательского ввода

Код: Выделить всё

#!/bin/bash

echo "Введите ваше имя: "
read username

echo "Привет, $username!"
Массивы

Код: Выделить всё

#!/bin/bash

my_array=("Значение1" "Значение2" "Значение3")

echo "Первый элемент массива: ${my_array[0]}"
Проверка наличия команд
Проверьте, установлена ли определенная команда, прежде чем ее использовать:

Код: Выделить всё

#!/bin/bash

if command -v some_command > /dev/null; then
    echo "some_command установлена"
else
    echo "some_command не установлена"
fi
проверка наличия подстроки:

Код: Выделить всё

#!/bin/bash

my_string="Пример строки"

if [[ $my_string == *"строка"* ]]; then
    echo "Строка содержит подстроку 'строка'"
else
    echo "Строка не содержит подстроку 'строка'"
fi
запуск команд параллельно с использованием &

Код: Выделить всё

#!/bin/bash

command1 &
command2 &
wait
echo "Все команды выполнены"
Этот скрипт демонстрирует использование переменных, условий и циклов в Bash

Код: Выделить всё

#!/bin/bash

# Путь к каталогу для резервных копий
backup_dir="/путь/к/резервным/копиям"

# Перечень файлов для резервного копирования
files_to_backup=("файл1.txt" "файл2.txt" "файл3.txt")

# Создаем каталог для резервных копий, если его нет
if [ ! -d "$backup_dir" ]; then
    mkdir -p "$backup_dir"
fi

# Цикл по файлам для резервного копирования
for file in "${files_to_backup[@]}"; do
    # Полный путь к файлу
    full_path="/путь/к/вашим/файлам/$file"

    # Проверяем, существует ли файл
    if [ -f "$full_path" ]; then
        # Создаем резервную копию файла в указанном каталоге
        cp "$full_path" "$backup_dir"
        echo "Резервная копия файла $file создана в $backup_dir"
    else
        echo "Внимание: Файл $file не существует!"
    fi
done

echo "Процесс резервного копирования завершен."

Re: Основы синтаксиса Bash #!/bin/bash

Добавлено: 26 мар 2025, 10:15
ya
сортирует содержимое текущей папки по размеру

Код: Выделить всё

du -a -d 1 -h | sort -h

Re: Основы синтаксиса Bash #!/bin/bash

Добавлено: 26 мар 2025, 10:20
ya
Вывод текста побуквенно в терминал с заданным интервалом

Код: Выделить всё

echo "Взлом пентагона.......... ОШИБКА ОШИБКА" | pv -qL 25

Re: Основы синтаксиса Bash #!/bin/bash

Добавлено: 26 мар 2025, 10:25
ya
узнать результат работы предыдущей команды

Код: Выделить всё

if [ $? -ne 0 ]; then
echo "Команда завершена неудачно";
fi;

Re: Основы синтаксиса Bash #!/bin/bash

Добавлено: 26 мар 2025, 10:32
ya
Проверка состояния процесса

Код: Выделить всё

check_process() {
echo "Checking if process $1 exists..."
[ "$1" = "" ]  && return 0
PROCESS_NUM=$(ps -ef | grep "$1" | grep -v "grep" | wc -l)
if [ $PROCESS_NUM -ge 1 ]; then
return 1
else
return 0
fi
}
реализация на примере процесса MySQL

Код: Выделить всё

check_process mysql;
CHECK_RET=$?;
if [ $CHECK_RET -ne 0 ];
# если процесс запущен
else
# если процесс не запущен
fi;

Re: Основы синтаксиса Bash #!/bin/bash

Добавлено: 26 мар 2025, 10:35
ya
Удаляет все пустые папки

Код: Выделить всё

find . -type d -empty -delete

Re: Основы синтаксиса Bash #!/bin/bash

Добавлено: 26 мар 2025, 10:38
ya
Передача данных на другой компьютер

Код: Выделить всё

dd if=/dev/dsp | ssh -c arcfour -C username@host dd of=/dev/dsp

Re: Основы синтаксиса Bash #!/bin/bash

Добавлено: 26 мар 2025, 10:41
ya
Выводит команды bash, которые используются чаще всего

Код: Выделить всё

history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head

Re: Основы синтаксиса Bash #!/bin/bash

Добавлено: 26 мар 2025, 10:45
ya
позволяет достаточно просто разбирать переданные параметры

Код: Выделить всё

while [ "$1" != "" ];
do
case $1 in
-s ) shift SERVER=$1 ;;
-d ) shift DATE=$1 ;;
--paramter|p ) shift PARAMETER=$1;;
-h|help ) # выведите сообщение с подсказкой
* ) # другие параметры
использование

Код: Выделить всё

parameter_test.sh -s losst -d 20170916 --parameter Subscribe!

Re: Основы синтаксиса Bash #!/bin/bash

Добавлено: 28 мар 2025, 12:57
ya
Проверка переданных аргументов в bash-скрипт

Код: Выделить всё

# Проверка количества аргументов
if [ $# -lt 1 ]; then
    echo "Ошибка: Необходимо передать хотя бы один аргумент."
    exit 1
fi

echo "Количество переданных аргументов: $#"

# Если вы хотите, можете вывести сами аргументы
for arg in "$@"; do
    echo "Аргумент: $arg"
done

Проверка прав суперпользователя

Код: Выделить всё

#!/bin/bash

# Проверяем, запущен ли скрипт с правами суперпользователя
if [ "$(id -u)" -ne 0 ]; then
    echo "Ошибка: Этот скрипт нужно запускать с правами суперпользователя."
    echo "Используйте команду: sudo $0 <первый аргумент> <второй аргумент> <третий аргумент>"
    exit 1
fi

# Проверяем количество переданных аргументов
if [ $# -ne 3 ]; then
    echo "Ошибка: Неверное количество аргументов. Их должно быть 3"
    echo "Использование: sudo $0 <первый аргумент> <второй аргумент> <третий аргумент>"
    exit 1
fi

exit 0
Проверка существования файла и он не пустой

Код: Выделить всё

#!/bin/bash

# Укажите путь к файлу
file_path="/path/to/your/file.txt"

# Проверяем, существует ли файл и не является ли он пустым
if [ -e "$file_path" ] && [ -s "$file_path" ]; then
    echo "Файл существует и не пустой."
else
    if [ ! -e "$file_path" ]; then
        echo "Ошибка: Файл не существует."
    elif [ ! -s "$file_path" ]; then
        echo "Ошибка: Файл существует, но он пустой."
    fi
    exit 1
fi

# Ваш основной код скрипта здесь