Всякие полезности при работе с bash

В данной статье я бы хотел собрать различные хитрости и полезности при работе со скриптами bash. Помощь по синтаксису bash вы можете найти в другой моей статье: «Краткий справочник по синтаксису bash»
Ну а тут я буду выкладывать куски готового кода, который поможет решить ту или иную задачу.

На данный момент есть решения для следующих задач:
1. Проверка на наличие активного процесса по имени
2. Получение текущей даты и её форматирование
3. Вывод отличий между двумя текстовыми файлами
4. Время выполнения скрипта
5. Проверка доступности хоста при помощи ping
6. Формирование двумерного массива

1. Проверка на наличие активного процесса по имени

ProcName="openvpn"
Check=`pidof $ProcName`
if [ "$Check" = "" ]
then
   # Процесс не запущен. Выполняем необходимые действия
else
   # Процесс запущен. Выполняем необходимые действия
fi

2. Получение текущей даты и её форматирование

date=`date +%Y%m%d-%H%M%S`

Получим: yyyymmdd-hhmmss

3. Вывод отличий между двумя текстовыми файлами

grep -f ./file1.txt -vFx ./file2.txt

4. Время выполнения скрипта

START=$(date +%s)
# do something
 
## <your script here> ###
 
END=$(date +%s)
DIFF=$(( $END - $START ))
echo "It took $DIFF seconds"

5. Проверка доступности хоста при помощи ping

count=$(ping -c 1 $PingHost | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }')
if [ $count -eq 1 ]
then
                echo "Host '$PingHost' available."
else
                echo "Host '$PingHost' unreachable."
fi

6. Формирование двумерного массива
Bash, по-умолчанию, не умеет работать с двумерными массивами.
Давайте научим:

# Задаем массив
ARRAY=(
  "data1-1" "data1-2"
  "data2-1" "data2-2"
)
# Считаем кол-во элементов в массиве и делим их на 2
n=$(( ${#SERVERS_VPN[@]}/2 ))
i=0
# Запускаем цикл while
while [ $i -lt $n ]
do
   echo "1 элемент: ${ARRAY[$((2*$i))]}"
   echo "2 элемент: ${ARRAY[$((2*$i+1))]}"
done

Вот и все. Для того, чтобы создать трехмерный массив, необходимо везде заменить «2» на «3».

Источники:
iamroot.ru: Мелочи. Grep вывод отличий 2-х конфигов Linux
iamroot.ru: Bash Время выполнения скрипта

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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.