Скрипт Bash для проверки доступных обновлений

Вопрос или проблема

Это мои самые первые шаги с bash-скриптами, и у меня возникла проблема.

Я хочу перечислить все плагины и темы в директории сайта, для которых доступны обновления:

1 #!/bin/bash
 2 
 3 #проверка наличия обновлений для плагинов, тем и основной версии установки WordPress
 4 
 5 str1="available"
 6 str2="none"
 7 
 8 wp plugin list | grep available | awk '{print $1, $2, $3, $4}'
 9 
10 if [ "$str1" == "$str2" ]; then
11     echo "Updates available"
12     else
13         echo "No updates available"
14         fi
15 
16 
17 wp theme list | grep available | awk '{print $1, $2, $3, $4}'
18 
19 if [ "$str1" == "$str2" ]; then
20 11     echo "Updates available"
21 12     else
22 13         echo "No updates available"
23 14         fi

Однако, если я выполню скрипт, появляется следующий вывод:

No updates available
updates_check: line 26: syntax error: unexpected end of file

Я пытался найти решение в интернете. Не могли бы вы поделиться, как следует завершить скрипт?
Спасибо!

WP-CLI и AWK

Один из способов — подсчет строки available в третьем столбце через AWK:

wp plugin list | \
 awk 'BEGIN{N=0;} \
  ($3=="available"){N++; print $0;} \
  END{print(N>0)?"Plugin updates available: "N:"No plugin updates available";}'

где N — это количество доступных обновлений, если вам нужно количество, $0 — это вся строка, а $3 — третий столбец.

Пример вывода:

Foo-plugin    active  available       1.2.3
Plugin updates available: 1

Аналогично для тем.

WP-CLI и PHP/WordPress API

Другой способ — сделать это через PHP-скрипт, который включает соответствующие вызовы WordPress API, и запустить его так:

wp eval-file script.php

или как пользовательская команда WP-CLI.

Смотрите, например, мой ответ здесь и здесь.

Ответ или решение

Создание скрипта Bash для проверки наличия обновлений в WordPress — это полезный инструмент для управления WordPress-сайтом. Данный скрипт нацелен на выявление плагинов и тем, требующих обновлений. Давайте разберемся, как мы можем усовершенствовать ваш подход и исправить ошибки в вашем начальном скрипте.

Анализ и улучшение вашего скрипта

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

Проблемы в текущем скрипте

  1. Логика сравнения строк: В вашем текущем скрипте переменные str1 и str2 всегда равны "available" и "none", соответственно, что никогда не приведет к выполнению блока if, поскольку условие "$str1" == "$str2" будет всегда ложным. Этот подход нуждается в исправлении.

  2. Ошибки синтаксиса: Ошибка "syntax error: unexpected end of file" часто указывает на отсутствие закрывающего элемента, например, fi, чтобы завершить блок if.

  3. Использование awk и grep: Эти команды предназначены для фильтрации и форматирования вывода, но их можно более эффективно использовать для достижения ваших целей.

Оптимизированный скрипт

Вот как может выглядеть усовершенствованный скрипт:

#!/bin/bash

# Проверка обновлений для плагинов в WordPress
echo "Проверка обновлений для плагинов..."
wp plugin list | awk '
BEGIN { updates=0 }
{
    if ($3 == "available") {
        print $0
        updates++
    }
}
END {
    if (updates > 0) {
        print "Доступны обновления для плагинов:", updates
    } else {
        print "Обновления для плагинов отсутствуют"
    }
}'

echo

# Проверка обновлений для тем в WordPress
echo "Проверка обновлений для тем..."
wp theme list | awk '
BEGIN { updates=0 }
{
    if ($3 == "available") {
        print $0
        updates++
    }
}
END {
    if (updates > 0) {
        print "Доступны обновления для тем:", updates
    } else {
        print "Обновления для тем отсутствуют"
    }
}'

Пояснения

  • awk: С помощью awk вы сможете подсчитать количество обновлений, отображать информацию о доступных обновлениях и выводить итоговое сообщение о наличии обновлений.
  • wp plugin list и wp theme list: Эти команды предоставляют информацию о плагинах и темах, включая их статус обновления.
  • Проверка количества обновлений: Переменная updates подсчитывает количество строк, содержащих "available", что указывает на наличие обновлений.

Альтернативные методы

Если вам нужно больше контроля или интеграции с WordPress API, можно рассмотреть создание WP-CLI команды на PHP. Это обеспечит более глубокую интеграцию и доступ к API WordPress для проверки обновлений.

Заключение

Внедрение данных улучшений не только устранит ошибки, но и сделает ваш скрипт более эффективным и информативным. Это позволит вам своевременно и точно отследить все доступные обновления для ваших плагинов и тем в WordPress.

Оцените материал
Добавить комментарий

Капча загружается...