Баш с нуля -- снова

По мере того, как мое путешествие по Bash продолжается, я все еще застрял на нелепых вещах, таких как этот скрипт, который я просто не могу понять:

      #!/bin/bash

if [ $1 -gt 100 ]
then
   echo "You typed a larger number"
   if (( $1 % 2 == 0 ))
   then
      echo "And it's even an even number"
fi

Недавно мне рекомендовали держать ShellCheck под рукой, что я и сделал, но, похоже, его предложения по улучшению этого скрипта тоже не работают. В основном, когда я пытаюсь запустить его, я всегда получаю ошибки типа «[: !=: ожидается унарный оператор», даже когда я пытаюсь указать $1 в «$1», что также рекомендуется ShellCheck. Может ли кто-нибудь помочь мне спуститься? Заранее большое спасибо!

1 ответ

В вашем скрипте есть синтаксическая ошибка; не хватает еще одного fiв конце. Как только эта ошибка будет исправлена, вы получите "ожидаемый унарный оператор", потому что ваш $1value (значение первого параметра скрипта) пусто, и первая команда ожидает, что это значение будет непустым. Вы должны вызвать скрипт с некоторым числом в качестве параметра, например:

      ./script 150

Затем вы получаете ответ:

      You typed a larger number
And it's even an even number

Если вы хотите, чтобы скрипт не отображал сообщения об ошибках при вызове без параметра, перед использованием параметра вы должны определить, является ли параметр пустым, и что-то сделать. Например, вы можете добавить следующий код перед вашим первым ifкоманда:

      if [ -z "$1" ]
then
   echo "Parameter required!"
   exit
fi
Другие вопросы по тегам