文章目录
- 说明
- 代码
-
- 方法1(expr)
- 方法2(let)
- 方法3($)
- python和shell对比
说明
前提,我今天在linux上尝试用for循环统计出满足条件的循环次数,但是我发现shell不能像其他语言一样 可以用 +1
,这可难哉了,网上搜索了很多关于统计shell循环次数的方法,竟然搜不到! 完全搜不到!!!!
所以我就自行研究了一个方法,利用 expr
的方法来计数,虽然,不标准,但起码能实现!! shell是个简单的开发语言,我觉得能实现就好!
如果要严谨,提供一个思路,可以自行研究一下:可以封装个函数来做统计的累加器!
代码
方法1(expr)
[root@controller-test ccx]# cat 8.sh
#!/bin/bash
num1=0
num2=0
for ((i=1;i<10;i++)) ; do
if [ $i -gt 5 ] ; then
num1=`expr $num1 + 1`
else
num2=`expr $num2 + 1`
fi
done
echo "<5:"$num1
echo ">5:"$num2
[root@controller-test ccx]# sh 8.sh
<5:4
>5:5
[root@controller-test ccx]#
方法2(let)
let实际上和expr没有区别,都是bash中用于计算的工具!!
代码如下(代码和方法1一样,只是把expr改成let而已):
[root@controller-test ccx]# cat 10.sh
#!/bin/bash
# declare或typeset内建命令(它们是完全相同的)可以用来限定变量的属性.
#这是在某些编程语言中使用的定义类型不严格的方式。命令declare是bash版本2之后才有的。
# declare不加也不会错,只是这用这个说明一下有这个东西!!!!
declare num1=0
num2=0
for ((i=1;i<10;i++)) ; do
if [ $i -gt 5 ] ; then
#num1=`expr $num1 + 1`
let num1=$num1+1
else
#num2=`expr $num2 + 1`
let num2=$num2+1
fi
done
echo "<5:"$num1
echo ">5:"$num2
[root@controller-test ccx]# sh 10.sh
<5:4
>5:5
[root@controller-test ccx]#
方法3($)
参考下图
python和shell对比
另外附一张图,python和shell执行该结果的代码区别: