Chinaunix首页 | 论坛 | 博客
  • 博客访问: 306553
  • 博文数量: 84
  • 博客积分: 5016
  • 博客等级: 大校
  • 技术积分: 900
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-30 20:22
文章分类

全部博文(84)

文章存档

2008年(21)

2007年(63)

我的朋友

分类:

2007-10-26 19:58:27

    进入流程控制我们首先要弄清楚的就是一些词汇的概念包括“条件”的概念,在此,我们不得不面对一些小学时候背字典没有背到的词汇:
   (别怪我下面不说人话,这些词汇很重要)
 
command:
    command的实质是program或script,由于它们(或它们的链接)被放入了$PATH所指定的路径(用whereis查一下就看到了)中,因而可以通过直接输入它们的名字来执行。
 
condition:
    condition既可以是expression也可以是command。使用expression作为condition的格式就像C那样,比如“if (aa>bb)”在shell中写作“if [ $aa > $bb ]”(要注意的是,shell对格式的要求是很严格的,一个空格也不能少);使用command作为condition时,condition判断的是command的返回,若成功,condition为ture,若失败,condition为false。
    使用pression作为condition的时候,pression语句一定要用中括号括起来,如果是command,就不需要了。
 
command:
    没错,你没看错,我也没打错,还是command,但这一个command你要知道它是一个动词——我的意思是,如果你把command作为condition,它不仅会被用来判断返回值,还有——它会被执行,用好这一点,对于表层的代码优化很重要。
    (读者:那底层呢?)
    (Zarok:去问Linus先生吧,我可不知道)
 
    对于它们的关系,我们可以用一个N字形的图直观的表示出来:
 
    condition          command
        |  \               |
        |   \              |
        |    \             |
        |     \            |
        |      \           |
        |       \          |
        |        \         |
        |         \        |
        |          \       |
        |           \      |
        |            \     |
        |             \    |
        |              \   |
        |               \  |
    pression           command
 
    command既可以是pression也可以是command,如果是command,它同时会被执行
    (这个书上可没有~)
 
 
    list:
    在shell编程中,list并不单纯地指一个列表(像/etc/fstab那样),很多时候,从我们的目的方向而言,它是一个值的列表,比如:
    #!/bin/bash
    {
    while read aa bb
    do
    echo $aa $bb
    done } < $1
    注:这个语法属于“命令块”了,在语法上,shell会把大括号中的指令们当作一个指令——就好像“指令 < 文件”一样。
    这里的$1就相当于一个list,变量(们)(请原谅我用“们”,因为我用“变量s”你们看不懂它是复数形式)会从list中一遍又一遍的取值,在for结构中的list就是这个:
    for var in list
    do
    operation
    done
    不同之处在于for一次只能为一个变量赋值,read aa bb 可以为多个变量赋值。
    当然,只要是名词就可以作为list,比如$(ls /)这种结构就可以,它也是一个值的列表。
阅读(744) | 评论(0) | 转发(0) |
0

上一篇:文件操作

下一篇:流程控制-if

给主人留下些什么吧!~~