linux shell script程序之循环结构简介

      在本文中, 我们来看看linux shell script的循环结构, 还是那句话, shell script虽然简单, 但一不小心就会出错, 比如, 我写出了如下的一个错误脚本:

 

#! /bin/bash
read n

i=1
sum=0
while [ $i -le $n ]
do
        $sum=$[ $sum + $i ]
        $i=$[ $i + 1 ]
done

echo $sum

     上面程序打算计算1-n的和, 但有问题, 因为赋值运算符的左边必须是左值啊, $sum和$i都是右值, 所以, 应该去掉$,  改后并运行, 结果如下:

 

 

[taoge@localhost learn_shell]$ cat a.sh 
#! /bin/bash
read n

i=1
sum=0
while [ $i -le $n ]
do
        sum=$[ $sum + $i ]
        i=$[ $i + 1 ]
done

echo $sum

[taoge@localhost learn_shell]$ 
[taoge@localhost learn_shell]$ 
[taoge@localhost learn_shell]$ 
[taoge@localhost learn_shell]$ ./a.sh 
100
5050
[taoge@localhost learn_shell]$ 


     下面, 我们用let来改改, 得到:

 

 

[taoge@localhost learn_shell]$ cat a.sh 
#! /bin/bash
read n

i=1
sum=0
while [ $i -le $n ]
do
        let sum=$sum+$i
        let i=$i+1
done

echo $sum

[taoge@localhost learn_shell]$ 
[taoge@localhost learn_shell]$ 
[taoge@localhost learn_shell]$ 
[taoge@localhost learn_shell]$ ./a.sh 
100
5050
[taoge@localhost learn_shell]$


     这个shell script赋个值还真麻烦, 跟C/C++完全没得比, 不过, 我们还是可以用相对较好的方法来计算表达之的值, 如下:

 

 

[taoge@localhost learn_shell]$ cat a.sh
#! /bin/bash
read n

i=1
sum=0
while [ $i -le $n ]
do
	((sum+=i))
	((i++))
done

echo $sum

[taoge@localhost learn_shell]$ 
[taoge@localhost learn_shell]$ 
[taoge@localhost learn_shell]$ 
[taoge@localhost learn_shell]$ ./a.sh
100
5050
[taoge@localhost learn_shell]$

 

 

 

 

 

       好吧, 说完while, 我们说说until, 其实until跟while就是个反东西, 看程序:

 

[taoge@localhost learn_shell]$ cat a.sh
#! /bin/bash
read n

i=1
sum=0
until ! [ $i -le $n ]
do
	((sum+=i))
	((i++))
done

echo $sum

[taoge@localhost learn_shell]$ 
[taoge@localhost learn_shell]$ 
[taoge@localhost learn_shell]$ 
[taoge@localhost learn_shell]$ ./a.sh
100
5050
[taoge@localhost learn_shell]$


       所以, 从这个意义上来讲, 我觉得until完全没有存在的必要了, 我们只需要认识它即可, 坚决不用它。

 

 

       我们看看for, 这个还挺有意思的(颇有点C++11的范围for的意味, 当然Objective-C中也有), 且看:

 

[taoge@localhost learn_shell]$ cat a.sh
#! /bin/bash
read n

sum=0
for i in `seq $n`
do
	((sum+=i))
done

echo $sum

[taoge@localhost learn_shell]$ 
[taoge@localhost learn_shell]$ 
[taoge@localhost learn_shell]$ 
[taoge@localhost learn_shell]$ ./a.sh
100
5050
[taoge@localhost learn_shell]$

 

      另外, 我们知道C/C++中有continue和break, 那shell script怎么能少这么重要的功能呢? 用法与C/C++非常类似, 我就不具体介绍了。

 

 

      好的, linux shell script的循环结构就先介绍到这里了。 晚安。

 

 

 

 


 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值