Вопрос или проблема
Это мои самые первые шаги с 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-сайтом. Данный скрипт нацелен на выявление плагинов и тем, требующих обновлений. Давайте разберемся, как мы можем усовершенствовать ваш подход и исправить ошибки в вашем начальном скрипте.
Анализ и улучшение вашего скрипта
Ваш скрипт стремится проверить наличие обновлений для плагинов и тем. Важно в первую очередь определить любые ошибки скрипта, понять их и исправить.
Проблемы в текущем скрипте
-
Логика сравнения строк: В вашем текущем скрипте переменные
str1
иstr2
всегда равны "available" и "none", соответственно, что никогда не приведет к выполнению блокаif
, поскольку условие"$str1" == "$str2"
будет всегда ложным. Этот подход нуждается в исправлении. -
Ошибки синтаксиса: Ошибка "syntax error: unexpected end of file" часто указывает на отсутствие закрывающего элемента, например,
fi
, чтобы завершить блокif
. -
Использование
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.