/bin/sh 脚本 - 如何判断参数是 1 还是 2?

/bin/sh 脚本 - 如何判断参数是 1 还是 2?

我得到了一个需要修改的脚本。它使用/bin/sh并且我可能不会改变它。

我想检查一个参数是否是整数 - 具体来说是 1 或 2。

我该如何做到这一点,并满足参数不存在或字符串以及无效整数的情况?

答案1

要检查脚本的参数是否为1or,2您可以简单地使用 case 语句。

下面的代码假设您想要检查$1

case $1 in
    [12])
        # $1 is 1 or 2
        ;;
    *)
        # $1 is not 1 and not 2
esac

没有真正需要验证参数是否是有效的整数,因为您只关心两个特定值,并且可以轻松地将它们验证为字符串。 shell 变量的值始终是字符串,除非在算术上下文中使用,并且这里没有理由这样做。

您还可以使用显式if声明:

if [ "$1" = '1' ] || [ "$1" = '2' ]; then
    # $1 is 1 or 2
else
    # $1 is not 1 and not 2
fi

答案2

检查以下链接以检查参数值是否为整数。

https://stackoverflow.com/questions/2210349/test-whether-string-is-a-valid-integer

要检查变量是否存在,假设您将第一个参数分配给变量

var=$1

 if [ ! -z "$var" ]; then
    echo "value is present"
 else
    echo "value is not present"
 fi 

相关内容