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

  • 相关阅读:
    《C++ Primer》之面向对象编程(四)
    《C++ Primer》之面向对象编程(三)
    《C++ Primer》之面向对象编程(二)
    《C++ Primer》之面向对象编程(一)
    《C++ Primer》之指向函数的指针
    C++ 隐式类类型转换和转换操作符
    python中的sum函数.sum(axis=1)
    numpy中tile函数
    sscanf函数详解
    snprintf()返回值的陷阱
  • 原文地址:https://www.cnblogs.com/quyong/p/6688007.html
Copyright © 2011-2022 走看看