Рейтинг:0

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

флаг cn

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

#!/бин/баш

если [$1-gt 100]
тогда
   echo "Вы ввели большее число"
   если (( $1 % 2 == 0 ))
   тогда
      echo "И это даже четное число"
фи

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

terdon avatar
флаг cn
Как вы это делаете? Прежде всего, вы не можете получить упомянутую вами ошибку, поскольку нигде в вашем скрипте нет `!=`. Во-вторых, вы пропустили закрывающее «если», что означает, что вы получите еще одну ошибку. В-третьих, вы, вероятно, запускаете скрипт без аргументов, поэтому `$1` не определено. Но, пожалуйста, не заставляйте нас гадать: [отредактируйте] свой вопрос и убедитесь, что вы показываете фактический код, который вы используете, объясняете, как вы его запускаете, и фактические ошибки, которые вы получаете.
Рейтинг:2
флаг cn
raj

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

./скрипт 150

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

Вы набрали большее число
И это даже четное число

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

если [-z "$1"]
тогда
   echo "Требуется параметр!"
   выход
фи

Ответить или комментировать

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