Регулярное выражение sed не работает в сценарии оболочки

Если вы используете режим Serva BINL, вы можете просто скопировать свой ServaAsset.infиз:

https://www.vercot.com/~serva/an/NonWindowsPXE3.html.

Больше ничего добавлять не нужно. Он отлично работает как с Serva "Community", так и с "Pro"

.

0
16.02.2020, 02:34
1 ответ

Экранирование амперсанда в определении MONGODB _URI в скрипте и упрощение регулярного выражения, избавление от -nи избавление от ненужного gв sed, получаем вот это (в этой версии тестовый профиль называется иначе, но должно быть понятно, что делать):

BASH_PROFILE="/tmp/test_profile"
MONGODB_URI="mongodb+srv://administrator:abcdef@mysite-cluster-n1qub.mongodb.net/mysite_development?retryWrites=true\&w=majority"

INSERT_ENV_VAR () {
  if [[ -z "$2" ]]
    then
      echo "Failed to retrieve $1"
   else
    if grep -q "$1" "$BASH_PROFILE"; then
      # Cannot use / delimiter, for value can contain /
      sed -i -E "s;(export $1=).*;\1$2;" "$BASH_PROFILE"
    else
      echo "export $1=$2" >> "$BASH_PROFILE"
    fi
  fi
}

INSERT_ENV_VAR 'ADMIN_EMAIL' 'bob@gmail.com'
INSERT_ENV_VAR 'MONGODB_URI' $MONGODB_URI

и запустив это с тестовым профилем, я получаю:

export ADMIN_EMAIL=bob@gmail.com
export MONGODB_URI=mongodb+srv://administrator:abcdef@mysite-cluster-n1qub.mongodb.net/mysite_development?retryWrites=true&w=majority
0
28.04.2021, 23:23

Теги

Похожие вопросы