鸟哥Linux私房菜之学习Shell Scripts(5)

发表于:2009-12-04 10:33

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

#
Linux
#
linux
分享:

  仔细比对一下这两个东西有啥不同喔! ^_^再来,如果我想要计算 1+2+3+....+100 这个数据呢? 利用循环啊~他是这样的:

  [root@linux scripts]# vi sh13.sh
  #!/bin/bash
  # Program:
  # Try to use loop to calculate the result "1+2+3...+100"
  # History:
  # 2005/08/29        VBird        First release
  PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
  export PATH
  s=0
  i=0
  while [ "$i" != "100" ]
  do
  i=$(($i+1))
  s=$(($s+$i))
  done
  echo "The result of '1+2+3+...+100' is ==>; $s"

  嘿嘿!当您执行了『 sh sh13.sh 』之后,就可以得到 5050 这个数据才对啊!这样了呼~ 那么让您自行做一下,如果想要让使用者自行输入一个数字,让程序由 1+2+... 直到您输入的数字为止, 该如何撰写呢?应该很简单吧?!答案可以参考一下习题练习里面的一题喔!

  -----------------------------------------------------------------------

  for...do....done

  相对于 while, until 的循环方式是必须要『符合某个条件』的状态, for 这种语法,则是『 已经知道要进行几次循环』的状态!他的语法是:

  for (( 初始值; 限制值; 执行步阶 ))
  do
  程序段
  done

  这种语法适合于数值方式的运算当中,在 for 后面的括号内的三串内容意义为:

  • 初始值:某个变量在循环当中的起始值,直接以类似 i=1 设定好;
  • 限制值:当变量的值在这个限制值的范围内,就继续进行循环。例如 i<=100;
  • 执行步阶:每作一次循环时,变量的变化量。例如 i=i+1。

  值得注意的是,在『执行步阶』的设定上,如果每次增加 1 ,则可以使用类似『i++』的方式,亦即是 i 每次循环都会增加一的意思。好,我们以这种方式来进行 1 累加到 100 的循环吧!

  [root@linux scripts]# vi sh14.sh
  #!/bin/bash
  # Program:
  # Try do calculate 1+2+....+100
  # History:
  # 2005/08/29        VBird        First release
  PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
  export PATH
  s=0
  for (( i=1; i<=100; i=i+1 ))
  do
  s=$(($s+$i))
  done
  echo "The result of '1+2+3+...+100' is ==>; $s"

  一样也是很简单吧!利用这个 for 则可以直接限制循环要进行几次呢!这么好用的东西难道只能在数值方面动作?当然不是啦~我们还可以利用底下的方式来进行非数字方面的循环运作喔!

  for $var in con1 con2 con3 ...
  do
  程序段
  done

  以上面的例子来说,这个 $var 的变量内容在循环工作时:

  第一次循环时, $var 的内容为 con1 ;

  第二次循环时, $var 的内容为 con2 ;

  第三次循环时, $var 的内容为 con3 ;

  ....

31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号