再次从头开始

再次从头开始

随着我继续探索 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

相关内容