Linux脚本练习之script025-判断用户输入的参数是否为正整数。
Posted 二木成林
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux脚本练习之script025-判断用户输入的参数是否为正整数。相关的知识,希望对你有一定的参考价值。
script025
题目
编写脚本 /root/bin/checkint.sh
,判断用户输入的参数是否为正整数。
分析
本题考查的知识点:
read
命令echo
命令grep
命令$?
变量if
条件判断语句- 判断数字大小
let
命令
思路:
- 脚本一:利用
grep -E
用表示数字的正则表达式来匹配输入的内容。如果完全匹配则表示输入的是一个整数,否则不是。通过判断$?
是否等于0
来判断是否完全匹配。
- 脚本二:利用条件判断
[ num -ge 0]
,如果输入的内容是整数大于等于0
则会通过条件判断,如果输入的内容不是整数那么这个条件表达式就不会成立,会报错进入else
语句。注意把错误输出重定向到/dev/null
中。
- 脚本三:利用
let
命令对输入的内容与0
进行运算。如果输入的是整数则会正确运算成功,并且返回的状态码是 0;如果输入的不是整数则会运算失败,返回的状态码是非 0。根据这个特性来判断是否是整数。
脚本一
#!/bin/bash
####################################
#
# 功能:判断用户输入的参数是否为正整数。
#
# 使用:输入一个有效的文件路径作为第一个参数
#
####################################
# 获取用户输入的数据
read -p "请输入一个整数:" num
# 校验输入的数据是否是整数
# 使用 grep 的正则表达式匹配来判断,"^[0-9]+$" 完全匹配一个数字
echo "$num" | grep -E "^[0-9]+$"
# 获取上一条命令执行返回的状态码
status_code=$?
# 判断状态码结果,如果状态码为 0 则表示上一条命令执行正确则表示是整数,如果状态码非 0 则表示上一条命令执行不正确则表示非整数
if [ $status_code -eq 0 ]; then
echo "$num 是一个整数!"
else
echo "$num 不是一个整数!"
fi
脚本二
#!/bin/bash
####################################
#
# 功能:判断用户输入的参数是否为正整数。
#
# 使用:输入一个有效的文件路径作为第一个参数
#
####################################
# 获取用户输入的数据
read -p "请输入一个整数:" num
# 校验输入的数据是否是整数
# 使用错误重定向
if [ "$num" -ge 0 ] &> /dev/null; then
echo "$num 是一个整数!"
else
echo "$num 不是一个整数!"
fi
脚本三
#!/bin/bash
####################################
#
# 功能:判断用户输入的参数是否为正整数。
#
# 使用:输入一个有效的文件路径作为第一个参数
#
####################################
# 获取用户输入的数据
read -p "请输入一个整数:" num
# 校验输入的数据是否是整数
# 使用 let 命令然后让 num 与 0 求和
let num+0
# 获取上一条命令执行的状态返回码
status_code=$?
# 如果上一条命令正确执行则状态返回码为 0 则表示是整数,如果上一条命令不正确执行则状态反返回码非 0 则表示是非整数
if [ $status_code -eq 0 ]; then
echo "$num 是一个整数!"
else
echo "$num 不是一个整数!"
fi
测试
执行 ./script025.sh
调用脚本,然后输入内容进行测试判断。
以上是关于Linux脚本练习之script025-判断用户输入的参数是否为正整数。的主要内容,如果未能解决你的问题,请参考以下文章
Linux脚本练习之script013-判断当前用户对指定参数文件,是否不可读并且不可写。
Linux脚本练习之script023-提示用户输入 `yes` 或 `no`,并判断用户输入的是`yes` 还是 `no`,或是其它信息。
Linux脚本练习之script015-实现禁止和允许普通用户登录系统。
Linux脚本练习之script092- 判断输入的是否为IP地址