脚本退出及参数迁移

版权声明:苏苏吖 https://blog.csdn.net/weixin_44774638/article/details/91489490

问题
本案例要求编写两个Shell脚本,相关要求如下:
整数检测脚本chkint.sh:能够检查从键盘键入的值,如果是整数(利用expr运算的返回值来检测)则显示输入的整数结果,否则报错退出
整数求和脚本mysum.sh:整数值以位置参数提供,个数不定
方案
由于Shell默认不支持小数运算,因此可以利用expr对提供的整数值进行运算,若执行报错,则说明提供的值不合法。比如:
[root@svr5 ~]# X=1234 //整数值变量
[root@svr5 ~]# expr $X + 1 //正常参与运算
1235
[root@svr5 ~]# echo $? //执行状态正常
0
[root@svr5 ~]# X=abc //非整数变量
[root@svr5 ~]# expr $X + 1 //运算时报错
expr: 参数数目错误
[root@svr5 ~]# echo $? //执行状态异常
2
shift操作用来迁移位置变量,比如执行 ./mysum.sh 10 20 30操作,则对于脚本mysum.sh来说,第一个位置变量$1的值为10、第二个位置变量$2的值为20、第三个位置变量$3的值为30。
若在脚本mysum.sh中执行一次shift操作,则$1的值变为20、$2的值变为30、$3的值为空。
再执行一次shift操作,则$1的值变为30、$2和$3的值都为空。
再执行一次shift操作,则$1、$2、$3的值都为空,相当于所有位置参数都丢弃了,位置参数的总个数为0。
步骤
实现此案例需要按照如下步骤进行。

步骤一:编写脚本chkint.sh
1)编写脚本文件
[root@svr5 ~]# vim chkint.sh
#!/bin/bash
read -p “请输入一个整数:” NUM
if expr KaTeX parse error: Expected 'EOF', got '&' at position 9: NUM + 1 &̲> /dev/null the…NUM"
else
echo “您输入的不是整数,请重新执行本程序。”
exit 10
fi

[root@svr5 ~]# chmod +x chkint.sh
2)测试脚本执行效果
[root@svr5 ~]# ./chkint.sh
请输入一个整数:1234
您输入的整数是:1234
[root@svr5 ~]# ./chkint.sh
请输入一个整数:12.34
您输入的不是整数,请重新执行本程序。
步骤二:编写mysum.sh脚本文件
1)编写脚本文件
[root@svr5 ~]# vim mysum.sh
#!/bin/bash
SUM=0
while [ $# -gt 0 ]
do
let SUM=SUM+$1
shift
done
echo “The SUM is : $SUM”

[root@svr5 ~]# chmod +x mysum.sh
2)测试脚本执行效果
[root@svr5 ~]# ./mysum.sh 10 20 30
The SUM is : 60
[root@svr5 ~]# ./mysum.sh 12 34 56 78
The SUM is : 180
[root@svr5 ~]# ./mysum.sh 111 222 333 444 555
The SUM is : 1665

猜你喜欢

转载自blog.csdn.net/weixin_44774638/article/details/91489490
今日推荐