DT Wiki

Удаление ^M в конце строки

Если bash скрипт создавался в среде Windows, то возможно открывая этот файл в среде Linux, вы можете увидеть в конце строки символ ^M, скрип при этом будет отдавать ошибку

bash.sh: line 7: $'\r': command not found

Убираем командой:

 sed -i "s/\r//g" bash.sh

Отечаем на вопрос

#!/bin/bash

read -p "Хотите ответить на вопрос? (y/n):" -n 1 -r
echo    # (optional)
if [[ $REPLY =~ ^[Yy]$ ]]
    then
        echo "Напишите ответ на вопрос:"
        read ANSW
        echo "Ваш ответ: ${ANSW}"
    else
        echo "Вы отказались от ответа"
fi

Узнаём имя сетевого интерфейса и его IP адрес

#!/bin/bash

IPLINK=$(ip link | awk -F: '$0 !~ "lo|vir|br|vet|doc|^[^0-9]"{print $2a;getline}') # Узнаём имя интерфейса
IPADDR=$(ip addr show ${IPLINK} | awk '$1 == "inet" {gsub(/\/.*$/, "", $2); print $2}') # Узнаем IP адрес этого интерфейса
echo "Имя интерфейса ${IPLINK}"
echo "IP адрес ${IPADDR}"

Проверка наличия файла в ходе выполнения скрипта

#!/bin/bash

FILE=/home/user/file.txt # Создаём переменную $FILE

if [ -f "$FILE" ]; # Проверяем наличие файла
	then
  	echo "File exist" # Если файл существует, выполняем команду.
  else
  	echo "File does not exist" # Если фай не существует выполняем другую команду
fi

Проверка наличия установленного пакета

#!/bin/bash

if dpkg -s whiptail &>/dev/null; # Проверяем наличие пакета Whiptail
  then
    echo 'Whiptail is already installed' # Если установлен выполняем команду
  else
    echo 'Whiptail is not installed' # Если не установлен выполняем другую команду
    echo 'Installing whiptail... Please Wait...'
    apt install -y whiptail # Либо устанавливаем пакет
fi

Создаём переменную для домашней папки пользователя

Когда запускается скрипт из под "SUDO", то любое обращение в скрипте к домашнему каталогу через тильду "~" будет направлено в каталог /root
Для того, что бы направить это обращение в домашний каталог пользователя, который запускает скрипт с повышение прав "SUDO", необходимо создать переменную вида:

USER_HOME=$(eval echo ~${SUDO_USER}) # Переменная
cd $USER_HOME # Приведёт в домашний каталог пользователя запустившего скрипт из под SUDO