Вложенные операторы if-then с переменными wp-cli

Я использую сценарии wp-cli и bash для изменения записей базы данных WordPress home и siteurl на нескольких веб-сайтах и ​​хочу универсально автоматизировать это с помощью этого сценария. Обычно я просто меняю его с помощью wp option set home <newurl> или просто глобального wp search-replace <oldurl> <newurl> --parameter, и мне нужно запустить дополнительную команду wp elementor, чтобы изменить содержимое публикации БД с помощью Elementor. Я использую первоначальный тест $URL, чтобы определить, является ли домашний URL временным доменом (например, http://box1234.temp.domains/%7Eusername). Чтобы избежать ошибок смешанного содержимого, а также поскольку большинство сайтов используют плагин Elementor, я хочу также настроить тест, который будет запускаться, и дополнительный поиск-замена с использованием родного Elementor wp-cli wp elementor replace-urls <oldurl> <newurl>, но нужно запускать команду только в том случае, если Elementor установлен и активен. Моя дилемма заключается в том, что я собираю oldurl и newurl из переменной, установленной ранее в сценарии, которая может быть или не быть временным доменным именем, установленным хостом, или просто версией http:// домена, и мне нужно вложить дополнительный оператор if-then-else, чтобы заставить эту команду wp elementor работать правильно, но я не уверен, как заставить ее работать.

read -ep "Enter the domain: " DOMAINCOM ; 

URL=$(echo $(wp option get home | grep '~'));

if [ $URL] ; 
  then 
    wp search-replace $url https://$DOMAINCOM; 
    wp elementor replace-urls $URL https://$DOMAINCOM; 
  else 
    wp search-replace http://$DOMAINCOM https://$DOMAINCOM ; 
    wp elementor replace-urls http://$DOMAINCOM https://$DOMAINCOM 
fi 

Мне нужно добавить приведенный ниже тест к приведенному выше сценарию, чтобы заменить * команды wp elementor в операторах then и else, чтобы учесть, является ли домашний URL временным доменом или нет.

ELEMENTORCHECK=$(wp plugin status elementor | grep -i status | cut -d: -f2); 
if [ $ELEMENTORCHECK= Active ] ; 
  then 
    wp elementor replace-urls $url https://$DOMAINCOM; 
  else 
    echo "Elementor isn't installed" | grep Elementor ; 
fi ; 

Я не думаю, что выполнение if [ $URL ] && [ $ELEMENTORCHECK ] или if [ $URL ] || [ $ELEMENTORCHECK ] сработает, и я не уверен, как вложить тесты с помощью оператора elif, не испортив весь оператор, и мне нужны некоторые рекомендации. Надеюсь, этот вопрос имеет смысл.


person Calisthenics    schedule 11.08.2020    source источник


Ответы (1)


догадаться:

if [ $URL ]
  then
    TEMPURL=$(wp option get home)
    wp search-replace $TEMPURL/ https://$DOMAINCOM/ --skip-columns=guid
    sed -i.bak "s#$TEMPURL#https://$DOMAINCOM#g" $(grep -irl "$TEMPURL")
    echo " 'wp search-replace' ran as well as 'sed' to change URLs from $TEMPURL to $DOMAINCOM " | grep 'wp search-replace\|sed\|$TEMPURL\|$DOMAINCOM'
    ELEMENTORCHECK=$(wp plugin status elementor | grep -i status | awk '{print $2}')
    if [ $ELEMENTORCHECK = Active ]
        then
          wp elementor replace-urls $TEMPURL https://$DOMAINCOM
        else
          echo "Elementor isn't installed or just isn't active" | grep Elementor
    fi
  else
    NOTTEMPURL=$(wp option get home)
    wp search-replace $NOTTEMPURL/ https://$DOMAINCOM/ --skip-columns=guid
    sed -i.bak "s#$NOTTEMPURL#https://$DOMAINCOM#g" $(grep -irl $NOTTEMPURL)
    echo " 'wp search-replace' ran as well as 'sed' to change URLs from $NOTTEMPURL to $DOMAINCOM " | grep 'wp-replace\|sed\|$NOTTEMPURL\|$DOMAINCOM'
    ELEMENTORCHECK=$(wp plugin status elementor | grep -i status | awk '{print $2}')
      if [ $ELEMENTORCHECK = Active ]
        then
          wp elementor replace-urls $NOTTEMPURL https://$DOMAINCOM
          echo "Elementor is installed and URLs were changed from $NOTTEMPURL to https://$DOMAINCOM using the command 'wp elementor replace-urls'" | grep -i elementor
        else
          echo "Elementor isn't installed or just isn't active" | grep Elementor
      fi
fi ;
person Calisthenics    schedule 01.09.2020