>_ IzzyLab

Практическое задание

Скрипт с флагами через getopts

средне

Напиши исполняемый /usr/local/bin/greet, который принимает флаг -n <имя> и печатает Hello, <имя>!. Без флага -n — выход с кодом 1.

Что потренируешь:
  • getopts
  • bash-скрипты
  • разбор флагов
  • $OPTARG
  • коды возврата

Разбор темы

Разбирать флаги командной строки вручную по $1, $2 — путь к багам с порядком и слипшимися опциями; в bash для этого есть встроенный getopts, который в цикле выдаёт распознанные флаги по одному. В строке спецификации двоеточие после буквы флага означает, что у него есть обязательный аргумент, и его значение попадает в $OPTARG. Ветвление по имени флага удобно делать через case, а обязательность флага проверяется уже после цикла обычным тестом на пустоту переменной с соответствующим exit-кодом.

Что проверяется

  1. greet исполняемый
  2. greet -n Vasya печатает Hello, Vasya!
  3. без -n выход с кодом 1

Как это выглядит