zoukankan      html  css  js  c++  java
  • 6、shell循环

    当需要重复的某些操作时,就要用到循环语句.
    (1)for语句
    大家知道在很多编程语言中for语句是最常见.在shell中也不例外.for语句要求shell将包含
    在这个语句中的一组命令连续执行一定的次数.
    语法格式:
    bash/pdksh
    用法1:
    for var1 in list
    do
    commands
    done
    含义:在这个for语句中,对应于list中的每个值,shell将执行一次commands代表的一组命令.
    在整个循环的每一次执行中,变量var1将依此取list中的不同的值.
    用法2:
    for var1
    do
    setatements
    done
    含义:在这个for语句中,shell针对变量var1中的每一项分别执行一次statements代表的一组
    命令.当使用这种形式的语句时,shell认为var1变量中包含了所有的位置变量,而位置变量中
    存放着程序的命令行参数值.也就是说,他等价于下列形式:
    for var1 in " $@"
    do
    statements
    done
    tcsh用法:
    tcsh中没有for这个单词,与for语句起同样功能的是foreach语句
    foreach name (list)
    commands
    end
    举例:
    for file ;bash/pdksh
    do
    tr a-z A-Z<$file>file.caps
    done
    # ;tcsh
    foreach file ( $ * )
    tr a-z A-Z<$file>$file.caps
    end

    (2)while语句
    while语句是shell提供的另一种循环语句. while语句指定一个表达式和一组命令.这个
    语句使得shell重复执行一组命令,直到表达式的值为False为止.
    语法格式:
    while expression ;bash
    do
    statements
    done
    while (expression) ;tcsh
    statements
    end
    举例:
    count=1 ;bash
    while [ -n "$ *"] ***
    do
    echo "this is a parameter number $count $1"
    shift
    count='expr $count + 1'
    done
    set count = 1 ;tcsh
    while ( " $ * " ! = "")
    echo "this is a parameter number $count $1"
    shift
    set count = 'expr $count + 1'
    end
    语句中shift命令的功能是将所有的命令行参数依次相左传递.
    (3)until语句
    until与while语句具有类似的语法格式和功能,不同的是while中expression的值为True时,
    shell执行命令组;而until中当expression的值为False时,shell才执行那组命令.
    语法格式:
    until expression
    do
    commands
    done
    举例:
    count=1
    until [ -z " $ * "] ***
    echo "this is a parameter number $count $1"
    shift
    count='expr $count + 1'
    done
    情注意上述例子中带***号.在while中的表达式: -n string,他的含义是当string不是空
    字符串时,表达式的值为True;在until中的表达式: -z string,他的含义是当string是空
    字符串时,表达式的值为True.由此可见,两个程序对条件表达式的设置恰好是相反的.
    (4)shift语句
    bash和tcsh都支持shift命令.shift将存放在位置变量中的命令行参数,依次向左传递.例如
    位置变量当前值为:
    $1=file1 $2=file2 $3=file3
    执行一次shift命令后,位置变量的值为:
    $1=file2 $2=file3
    还可以在shift命令中指定位置变量转移的次数, 如:
    shift n
    例子:
    while [ "$1"]
    do
    if [ "$1"="-i"] then
    infile=" $2"
    shift 2
    else if [ "$1"="-o"] then
    outfile="$2"
    shift 2
    else
    echo "Program $0 does not recognize option $1"
    fi
    done
    tr a-z A-Z<$infile>$outfile
    (5)select语句
    select语句是pdksh提供的一个独特的循环语句.他不同于前面介绍的循环语句.他不是
    反复计算一个条件表达式,并依据表达式的值决定是否执行一组命令.select的功能是自动的
    生成一个简单的文本菜单.
    语法格式:
    select menu [in list_of_items]
    do
    commands
    done
    含义:当执行一个select语句时,pdksh分别为每个列在list_of_items中的成员建立一个菜单
    选项.list_of_items既可以是一个包含多个选项的变量,也可以是直接列在程序中的一组选项
    .如果语句中没有提供list_of_items,select语句将使用位置变量作为list_of_items.
    举例:
    select menuitem in pick1 pick2 pick3
    do
    echo "are you sure you want to pick $menuitem"
    read res ;接收用户的输入,并且将输入的值存放在特定变量里.
    if [ $res=" y" -o $res=" Y"]
    then
    break ;用于退出while,for,select等循环语句
    fi
    done
    (6)repeat语句
    repeat语句是tcsh提供的独有的循环语句.使用repeat命令要求shell对一个命令执行一定
    的次数.
    语法格式:
    repeat count command
    ;
    foreach num ( $ *)
    repeat $num echo -n " *"
    echo " "
    end

  • 相关阅读:
    hdu 2485 Destroying the bus stations 迭代加深搜索
    hdu 2487 Ugly Windows 模拟
    hdu 2492 Ping pong 线段树
    hdu 1059 Dividing 多重背包
    hdu 3315 My Brute 费用流,费用最小且代价最小
    第四天 下载网络图片显示
    第三天 单元测试和数据库操作
    第二天 布局文件
    第一天 安卓简介
    Android 获取存储空间
  • 原文地址:https://www.cnblogs.com/quyong/p/6688007.html
Copyright © 2011-2022 走看看