Linux shell实现阶乘
#!/bin/shread -p "请输入想计算的数字:" num#首先定义一个num参数接受为命令行的第一个参数expr $num + 1 &>/dev/null#利用expr计算时参数必须是整数的原则,如果返回零则输入的为整数[ $? -ne 0 ] && echo “please input a integer number.” && exit
·
#!/bin/sh
read -p "请输入想计算的数字:" num #首先定义一个num参数接受为命令行的第一个参数
expr $num + 1 &>/dev/null #利用expr计算时参数必须是整数的原则,如果返回零则输入的为整数
[ $? -ne 0 ] && echo “please input a integer number.” && exit 2 #接受上面传过来的参数,做判断,如果为零则返
回提示以及状态码2
[ $num -eq 1 ] && echo “Usage:$0 number can’t is 1” && exit 1 #如果是1则返回提示以及状态码1
[ $num -le 0 ] && echo "please input a number bigger than 0" && exit 3 #不能小于0 啊
for i in `seq 1 $num` #从1循环到num
do
declare -i ss=$i+1
s=$(($i*$ss)) #调用自身实现阶乘双层括号,内层执行运算命令,外层接受返回值并赋值成一个变量
done
echo $s
运行结果
[root@localhost rjgc]# bash jc.sh
请输入想计算的数字:5
30
这里还是有几个问题想请教看到的大佬门
1.第三行为啥要有个&,整体我知道是为了把输出给空,但是加个&啥意思吖(这一句网上copy的,,)
2.第11行为啥要两个括号才可以吖,我本来写成这样
s=$(($i*$i+1))
但是他是先计算乘再计算加,想请教如何定义逻辑计算的优先级吖!各位大佬们啊啊啊啊!
更多推荐
已为社区贡献2条内容
所有评论(0)