Как правильно фильтровать ошибки типов в скриптах Bash? - PullRequest
2 голосов
/ 03 апреля 2019

Несколько лет назад, когда мы изучали сценарий Bash, наш учитель учил нас, что первое, что мы должны сделать, это отфильтровать «тип» приведенных аргументов и выдать ошибку в случае, если они отличаются от ожидаемых.

(например, если наш скрипт принимает 2 аргумента для их суммирования, мы должны сначала проверить, действительно ли они были числами)

Метод, который он сказал нам использовать, был sed команда.

В приведенном выше примере мы взяли бы все символы из аргументов, которые отличаются от чисел, и, если они есть, мы бы рассмотрели его как не числовое значение, выдав ошибку.

Поскольку этот метод выглядит для меня довольно элементарно, я хотел бы спросить:

Есть ли какой-нибудь элегантный способ добиться этого?

Действительно ли этот процесс выполняется при создании сценариев?

1 Ответ

2 голосов
/ 03 апреля 2019

sed - это утомительное излишество, когда в оболочку встроена эта функциональность.

case $1 in *[!0-9]*) echo "$0: not a number: $1" >&2; exit 127;; esac

(Если вы хотите учесть отрицательные числа или нецелые числа, очевидно, адаптируйте шаблон глобуса.)

Сама оболочка вообще не имеет типов - все является строкой.

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