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

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


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


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

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

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".

7. Удаление первых и последних символов из строк
Удалить первые 5 символов в строке:
echo 12345---BASH---54321 | cut -c 6-
---BASH---54321

Вывести строку между символами:
echo 12345---BASH---54321 | cut -c 9-12
BASH

Вывести первые символы:
echo 12345---BASH---54321 | cut -c 1-12
12345---BASH

Удалить последние символы в строке:
echo 12345---BASH---54321 | rev | cut -c 9- | rev
12345---BASH


Источники:
iamroot.ru: Мелочи. Grep вывод отличий 2-х конфигов Linux
iamroot.ru: Bash Время выполнения скрипта
shellhacks.com: Удаление первых и последних символов из строк скачать dle 10.2 Форекс опционы

Внимание! Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.