Bash скрипт добавление нового сайта. Проблема с проверкой условий

Рейтинг: 0Ответов: 0Опубликовано: 04.03.2023

Всем привет. Решил написать небольшой скрипт на автоматическое прописывание нового сайта в лампе и столкнулся в проблеме модуля проверки.

#!/bin/sh
# Добавление сайта в систему

clear
echo "Введите название сайта"
read p1
echo '\n'
sudo mkdir -p /var/www/$p1 && sudo chown -R www-data:www-data /var/www/$p1 && sudo find /var/www/$p1 -type d -exec chmod 777 {} \; 

echo "<VirtualHost *:80>
    ServerAdmin admin@$p1
    ServerName $p1
    ServerAlias www.$p1
    DocumentRoot /var/www/$p1
    ErrorLog \${APACHE_LOG_DIR}/error.log
    CustomLog \${APACHE_LOG_DIR}/access.log combined
</VirtualHost>" | sudo tee /etc/apache2/sites-available/$p1.conf > /dev/null


echo "127.0.0.1 $p1" | sudo tee -a /etc/hosts > /dev/null
echo '\n'

var=$(sudo a2ensite $p1.conf)
c="Enabling site $p1. To activate the new configuration, you need to run: systemctl reload apache2"
if [[ "$var" == "$c" ]]; then
    echo "Верно" 
else 
    echo "Не верно" 
fi 

в конце скрипт должен проверять вывод команды sudo a2ensite $p1.conf и если вывод равен значению переменной с то все гуд. Я уже выводил и эхом значения для проверки и засовывал в файл для просмотра. Значения для нового сайта идентичны с переменной с. Пытался ограничить двоеточие в тексте но результата не дало.

нашел для себя пару решений

var=$(sudo a2ensite $p1.conf) > 123.txt  
if grep -q "Enabling site $p1. To activate the new configuration, you need to run: systemctl reload apache2" 123.txt; then

здесь просто загоняю вывод в файл и беру с него инфу

или

if [[ "$var" == *"To activate the new configuration, you need to run":""* ]]; then 

Поиск по части фразы.

Пытался полную фразу ввести но после двоеточия начинаются проблемы

также делал через $?

Как по мне это костыль и хочется разобраться с первым вариантом. Почему идет не корректное сравнение переменных.

Ответы

Ответов пока нет.