Как мой Путешествие по 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. Может ли кто-нибудь мне помочь? Заранее большое спасибо!
Ваш скрипт имеет синтаксическую ошибку, в нем не хватает еще одного fi
в конце.
После исправления этой ошибки вы получите "ожидается унарный оператор", потому что ваше значение $1
(значение первого параметра скрипта) пустое, а первая команда if
ожидает, что это значение будет непустым. Вы должны вызвать скрипт с некоторым числом в качестве параметра, например:
./script 150
Тогда вы получите ответ:
You typed a larger number
And it's even an even number
Если вы хотите, чтобы скрипт не выводил сообщения об ошибках при вызове без параметра, перед использованием параметра вы должны определить, пуст ли параметр, и что-то сделать. Например, вы можете добавить следующий код перед первой командой if
:
if [ -z "$1" ]
then
echo "Parameter required!"
exit
fi