Как "обернуть" команду bash и проанализировать аргументы - PullRequest
0 голосов
/ 03 августа 2020

Я нашел этот вопрос: Как написать функцию bash, чтобы обернуть другую команду?

И это вроде как ответило на мой вопрос, но не совсем ..

Я хочу сделать что-то похожее на приведенное выше, но установить переменную среды в зависимости от аргументов команды - синтаксический анализ аргументов - это то место, где я застрял

Я хочу обернуть docker-compose в функцию, и если это up, затем установите переменную env, в которой хранится каталог файла docker -compose.yml; если он не работает, то отключите env var.

function docker-compose () {

  if "$@" == "*up*"; then
    DC_FILE=${$PWD##*/}
  elif "$@" == "*down*"; then
    unset DC_FILE
  fi
  command docker-compose "$@"
}

Что-то вроде этого, но синтаксический анализ аргументов - вот что меня застряло

абстрактно:

function fun() {
if the arguments contain "a":
 set var
elif the arguments contain "b":
 unset var
fi
execute command with all arguments passed to it
}

1 Ответ

0 голосов
/ 03 августа 2020

Чтобы проверить, содержит ли список аргументов подстроку, вы можете использовать

if [[ "$*" == *"up"* ]]
then
  echo "Match"
fi

Здесь используется расширенная тестовая команда [[ .. ]] для сопоставления "$*" (аргументы, объединенные пробелами в одну строку) с рисунком глобуса *"up"*. Следовательно, он соответствует up foo и down --project-name=backup

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...