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

发表于:2009-12-03 11:00

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

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

  另外, function 也是拥有内建变量的~他的内建变量与 shell script 很类似, 函数名称代表示 $0 ,而后续接的变量也是以 $1, $2... 来取代的~ 这里很容易搞错喔~因为『 function fname() { 程序段 } 』内的 $0, $1... 等等与 shell script 的 $0 是不同的。以上面 sh11-2.sh 来说,假如我下达:『 sh sh11-2.sh one 』 这表示在 shell script 内的 $1 为 "one" 这个字符串。但是在 printit() 内的 $1 则与这个 one 无关。 我们将上面的例子再次的改写一下,让您更清楚!

  [root@linux scripts]# vi sh11-3.sh
  #!/bin/bash
  # Program:
  # Let user input one, two, three and show in screen.
  # History:
  # 2005/08/29        VBird        First release
  PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
  export PATH
  function printit(){
  echo "Your choice is $1"
  }
  echo "This program will print your selection !"
  case $1 in
  "one")
  printit 1
  ;;
  "two")
  printit 2
  ;;
  "three")
  printit 3
  ;;
  *)
  echo "Usage {one|two|three}"
  ;;
  esac

  在上面的例子当中,如果您输入『 sh sh11-3.sh one 』就会出现『 Your choice is 1 』的字样~ 为什么是 1 呢?因为在程序段落当中,我们是写了『 printit 1 』那个 1 就会成为 function 当中的 $1 喔~ 这样是否理解呢? function 本身其实比较困难一点,如果您还想要进行其它的撰写的话。 不过,我们仅是想要更加了解 shell script 而已,所以,这里看看即可~了解原理就好啰~ ^_^

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

  循环 (loop)

  除了 if...then...fi 这种条件判断式之外,循环可能是程序当中最重要的一环了~ 循环可以不断的执行某个程序段落,直到使用者设定的条件达成为止。 所以,重点是那个『条件的达成』是什么。底下我们就来谈一谈:

  while do done, until do done

  一般来说,循环最常见的就是底下这两种状态了:

  while [ condition ]
  do
  程序段落
  done

  这种方式中, while 是『当....时』,所以,这种方式说的是『当 condition 条件成立时,就进行循环,直到 condition 的条件不成立才停止』的意思。

  until [ condition ]
  do
  程序段落
  done

  这种方式恰恰与 while 相反,它说的是『当 condition 条件成立时,就终止循环, 否则就持续进行循环的程序段。』是否刚好相反啊~我们以 while 来做个简单的练习好了。 假设我要让使用者输入 yes 或者是 YES 才结束程序的执行,否则就一直进行告知使用者输入字符串。

  [root@linux scripts]# vi sh12.sh
  #!/bin/bash
  # Program:
  # Use loop to try find your input.
  # History:
  # 2005/08/29        VBird        First release
  PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
  export PATH
  while [ "$yn" != "yes" ] && [ "$yn" != "YES" ]
  do
  read -p "Please input yes/YES to stop this program: " yn
  done

  上面这个例题的说明是『当 $yn 这个变量不是 "yes" 且 $yn 也不是 "YES" 时,才进行循环内的程序。』 而如果 $yn 是 "yes" 或 "YES" 时,就会离开循环啰~那如果使用 until 呢?呵呵有趣啰~ 他的条件会变成这样:

  [root@linux scripts]# vi sh12-2.sh
  #!/bin/bash
  # Program:
  # Use loop to try find your input.
  # History:
  # 2005/08/29        VBird        First release
  PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
  export PATH
  until [ "$yn" == "yes" ] || [ "$yn" == "YES" ]
  do
  read -p "Please input yes/YES to stop this program: " yn
  done

相关阅读:

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

22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号