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

全部博文(84)

文章存档

2008年(21)

2007年(63)

我的朋友

分类:

2007-10-27 12:05:55

    我把所有的循环语句都放在这里好了,下午还要买书,时间来不及了。
    (旁白:真不负责)
 
 
    for:
    for的语法结构为:
 
    for 变量 in list
    do
    operation
    done
 
    作用:每次循环会把一个值从list中取出。
    例:
    #!/bin/bash
    for aa in $(ls /)
    do
    echo $aa
    done
    这个脚本会把根目录下的目录名在每次循环赋予aa(每次循环赋予一个,直至赋完)。
    不要试图一次赋2个变量,除非你把read写在operation位置。
    如果你想方便地一次赋两个变量,你可以考虑把它写到while的condition位置中,比如下面。
 
 
    while:
    while的语法为:
 
    while condition
    do
    operation
    done
 
    例:
    #!/bin/bash
    IFS=:
    while read aa bb cc
    do
    echo $aa
    echo $bb
    echo $cc
    done
    这个脚本需要你在执行时给它输入一个文件,比如test.sh < /etc/passwd
    如果你感觉这样做对于使用者会造成一些逻辑上的麻烦,可以考虑命令块的结构:
    #!/bin/bash
    IFS=:
    {
    while read aa bb cc
    do
    echo $aa
    echo $bb
    echo $cc
    done } < $1
    这样改进之后,就可以把文件作为参数来写了,当你把一个这种结构的脚本放进$PATH,基本上会给人一种使用指令的感觉,比如:test.sh /etc/passwd
    将command作为while的condition的好处在于如果read到末尾read不出来东西了该condition就会返回一个false,while就会停止,这是一种很合理的用法。
 
   
    select:
    select的语法为:
 
    select 变量 in list
    do
    operation
    done
 
    注:这里的list的作用是一个选项的列表——select和for的工作方式完全不一样,但它的工作方式是循环的,所以我才把select放在这里。
    select会形成一个选项菜单,你执行那个脚本时要做的就是选择菜单项的序号。
    到目前为止我们还没写出一个能输出像样的东西的脚本吧……现在我们用select写一个:
    #!/bin/bash
    select aa in $(ls /)
    do
    ls /$aa
    done
    挺像“窗口”使用上的逻辑吧?
 
 
    until:
    until的语法为:
 
    until condition
    do
    operation
    done
 
    until就是until的意思,不需要解释了吧?
    直到condition为ture,才结束循环。
 
 
    PS:
    我妈妈说:快下雨了,赶紧去买书吧,别回来浇湿了。
    我说:没关系,我喜欢下雨时出门。
    我妈妈说:你喜欢自己洗衣服吗?
阅读(1133) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~