码迷,mamicode.com
首页 > 系统相关 > 详细

shell脚本编程-结构化命令2-for命令

时间:2015-12-06 22:34:18      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:

1、for命令
(1)语法
    for val in list; do
        commands
    done

  list参数提供了一些列用于迭代的值,val值依次赋值为list中的值,知道list轮询结束。

    commands可以是一条或多条shell命令,echo $val可以查看当前循环的值
(2)读取列表中的值
    $cat test
    #!/bin/bash
    # basic for command
    for test in A B C; do
        echo the next val is $test
    done
    $./test
    the next val is A
    the next val is B
    the next val is C
    每次for命令便利提供的值列表时, 会将列表中的下个值赋给$test变量。
    在最后一次迭代中,$test的值会在shell脚本中的剩余部分一直有效。
    当所要迭代的值中含有空格、单引号、双引号时,for命令不能识别其为值得一部分,可以采用两种方式处理:
        当遍历的值中出现空格、单引号时,可以通过在值两侧添加双引号以示区别;
        当遍历的值中出现单引号、双引号时,可以通过转义字符\来讲其转义;
(3)从变量或命令读取值
    通常shell脚本遇到的情况是,将一系列的值存储在变量中,然后遍历整个变量列表
    
   $cat test
    #!/bin/bash
    # using a variable to hold the list
    list="A B C"
    list=$list" D"
    for test in $list; do
        echo the next val is $test
    done
    $./test
    the next val is A
    the next val is B
    the next val is C
    the next val is D
    向已知变量中增加值通过list=$list" D"实现,这个尾部添加文本的一个常用方法
    生成遍历列表的另一个方法是使用命令的输出,可以通过反引号来执行任何能产生输出的命令
    $cat test
    #!/bin/bash
    # reading value from a file
    file="alphabet"
    for test in `cat $file`; do
        echo the next val is $test
    done
    $./test
    the next val is A
    the next val is B
    the next val is C
(4)更改字段分隔符
    bash中定义了特殊的环境变量IFS,称为内部字段分隔符。默认情况下,bash会将空格、制表符、换行符作为字段分隔符。
    当我们在使用时,可以修改IFS的值已满足不同的情况。
    修改IFS值格式,如:IFS=$‘\n‘, IFS=:
    一般情况下载处理长脚本时,需要先将IFS的值保存在临时变量中,在使用完后再恢复它:
    IFS.OLD=$IFS
    IFS=$‘\n‘
    <use the new IFS value in code>
    IFS=$IFS.OLD
    如果需要多个IFS字符,只需将它们在赋值时串起来即可:IFS=$‘\n:;"‘,这样就可以把换行、冒号、分好、双引号都作为字符按分隔符处理。
(5)使用通配符遍历目录
    $cat test
    #!/bin/bash
    #iterate through all the files in a directory
    for file in /home/test/* ; do
        if [ -d "$file" ]; then
            echo "$file is a directory"
        elif [ -f "$file" ]; then
            echo "$file is a file"
        fi
    done
    linux中文件或目录中可以包含空格,所以file需要使用双引号"$file"。
 

shell脚本编程-结构化命令2-for命令

标签:

原文地址:http://www.cnblogs.com/hancq/p/5024561.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!