![/bin/sh 脚本 - 如何判断参数是 1 还是 2?](https://linux22.com/image/162768/%2Fbin%2Fsh%20%E8%84%9A%E6%9C%AC%20-%20%E5%A6%82%E4%BD%95%E5%88%A4%E6%96%AD%E5%8F%82%E6%95%B0%E6%98%AF%201%20%E8%BF%98%E6%98%AF%202%EF%BC%9F.png)
我得到了一个需要修改的脚本。它使用/bin/sh
并且我可能不会改变它。
我想检查一个参数是否是整数 - 具体来说是 1 或 2。
我该如何做到这一点,并满足参数不存在或字符串以及无效整数的情况?
答案1
要检查脚本的参数是否为1
or,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