随着我继续探索 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
最后缺少一个。一旦修复此错误,您将得到“需要一元运算符”,因为您的$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