Bash Если оператор Else внутри одной командной строки - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть дело:

case $1 in
  "start") exec docker-compose up ;;
  "check-types") docker-compose run --rm myapp mypy --config-file=mypy.ini $2;;
  "help" | *) print-help ;;
esac

Я хотел бы заменить $2, записанный в "check-types", на if статут, в котором будет указано что-то похожее на:

if [[ $2 ]]; then
  $2
else
  .
fi

Возможно ли это в одной строке bash?

Пример желаемого поведения:

  • запись ./cli check-types выполняет docker-compose run --rm myapp mypy --config-file=mypy.ini .
  • ./cli check-types app/test выполняет docker-compose run --rm myapp mypy --config-file=mypy.ini app/test

1 Ответ

4 голосов
/ 23 апреля 2020

Вы можете использовать оператор :-, чтобы указать значение по умолчанию, если $2 равно нулю или не установлено.

case $1 in
  "start") 
    exec docker-compose up ;;
  "check-types")
    docker-compose run --rm myapp mypy --config-file=mypy.ini <b>"${2:-.}"</b>;;
  "help" | *)
    print-help ;;
esac

(В целом, однако, bash не имеет условного выражения. )

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