Проблема со скриптом, который проверяет имя дистрибутива и делает что-то в зависимости от значения дистрибутива

#linux #bash #ubuntu

#linux #bash #ubuntu

Вопрос:

Я хочу создать скрипт, который в зависимости от дистрибутива выполняет набор команд (в этом примере я хочу проверить наличие Ubuntu и Centos). Я ввел базовую инструкцию if-else в скрипт, но я новичок в bash и не могу понять, почему это не работает. Вот код:

   a= lsb_release -i | awk -F " " '{print $3}'


if  [ "$a"=="Ubuntu" ]; then
        echo "$a"       
else
        echo "Not ubuntu"
fi
  

Заранее спасибо!

Комментарии:

1. измените его на команду: a=$(lsb_release -i | awk -F " " '{print $3}')

2. Добавьте ошибку в свой скрипт и вставьте ее в shellcheck.net

3. при использовании для сравнения строк на равенство используется [ только одна = строка, поэтому if [ "$a" = "Ubuntu" ]; then посмотрите на man [ . также посмотрите на -s вариант lsb_release , который предоставит вам только ту информацию, которую вы хотите, без заголовка, например. lsb_release -si

4. Извините за поздний ответ. Все ваши ответы по-своему мне очень помогли. Я устранил проблему и научился делать это правильно. Спасибо!