Удаление ^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