Вы вызываете свою функцию с помощью
check
, то есть вы не передаете никаких параметров, следовательно, $ 1 и $ 2 пусты, поэтому это не может работать. Вам нужно будет написать
check "$@"
или
check "$1" "$2"
в зависимости от того, чего именно вы хотите достичь.
Однако с вашим исходным кодом вы должны получить для вашего оператора if
сообщение об ошибке
[: -lt: unary operator expected
ОБНОВЛЕНИЕ : Как отметил в своем комментарии GordonDavisson, вы не получите эту синтаксическую ошибку здесь, поскольку оба операнда отсутствуют в ваш случай и -lt
теряет смысл в качестве оператора.
Кстати, если бы вы написали тест как
if (( $1 < $2 )); then
, вы бы получили синтаксическую ошибку (bash: ((: <: синтаксическая ошибка: ожидается операнд (маркер ошибки "<") </em>)