zoukankan      html  css  js  c++  java
  • shell中的for、while、until

    for var in list
    do
        commands
    done

    在每个迭代中,变量var会包含列表中的当前值,第一个迭代会使用列表中的第一个值,第二个迭代使用第二个值。

    在do和done中,$var变量包含着这次迭代对应的当前值。

    只要你愿意,可以将do语句和for语句放在同一行,但必须用分号将其同列表中的值分开。
    for var in list;do。
    
    #! /bin/bash
    for test in Alabama Alaska Arizona Arkansas California Colorado
    do
        echo The  next state is $test
    done

    在最后一次迭代后,$test变量的值会在shell脚本的剩余部分一直保持有效。它会一直保持最后一次迭代的值(除非你修改了它)。

    shell看到for列表值中的单引号并尝试使用它们来定义一个单独的数据值,这个过程一团混乱。

    两种解决办法:

    1)使用转义字符(反斜线)来将单引号转义

    2)使用双引号来定义用到单引号的值。

    如:

    for test in I don't  know if this'll work
    do 
        echo "word: $test"
    done
    执行结果:
    liuxj@liuxj-Lenovo:~/shell_test$ ./for_test 
    word: I
    word: dont  know if thisll
    word: work

    修改后

    for test in I don't  know if "this'll" work
    do 
        echo "word: $test"
    done
    执行结果:
    liuxj@liuxj-Lenovo:~/shell_test$ ./for_test 
    word: I
    word: don't
    word: know
    word: if
    word: this'll
    word: work

    for循环假定每个中值都是用空格分割的。注意:如果有包含空格的数据值,可用双引号将其包含起来,shell不会将双引号当成值的一部分。

    从变量读取列表

    通常shell脚本遇到的情况是,将一系列值都集中在一个变量中,然后需要遍历整个列表。

    list="Alabama Alaska Arizona Arkansas Colorado"
    list=$list" Connecticut"
    for state in $list
    do
    echo "Have you ever visited $state?"
    done

    结果:

    Have you ever visited Alabama?
    Have you ever visited Alaska?
    Have you ever visited Arizona?
    Have you ever visited Arkansas?
    Have you ever visited Colorado?
    Have you ever visited Connecticut?

    注意:代码中用了另一个赋值语句来向$list变量包含的已有列表添加了一个值。这是向变量中存储的已有文本字符串尾部添加文本的一个常用方法。

    从命令读取值

    用反引号来执行任何能产生输出的命令。在states的文件中输入一些参数。

    file="states"
    for state in `cat $file`
    do
        echo "Visit beautiful $state"
    done

    在linux中,目录名和文件名中包含空格当然是合法的,要容纳这种值,你应该将$file变量用双引号圈起来。

    shell脚本中多行的注释:

    if false; then
    
    语句1
    
    语句2
    
    语句3
    
    语句4
    
    fi

    如:

    #! /bin/bash
    if false;then
    for test in Alabama Alaska Arizona Arkansas California Colorado
    do
        echo The  next state is $test
    done
    fi
  • 相关阅读:
    $(document).ready(function() {。。。。。})里面的所有的代码都不执行(不执行初始化脚本)
    checkbox使用示例
    js中数组元素的添加和删除
    maven构建项目里classpath的位置
    Docker相关释义
    linux的systemctl服务及其使用
    RabbitMQ中客户端的Channel类里各方法释义
    java四种内部类详解
    生成随机字符串(三种方式)
    RabbitMQ在java中基础使用
  • 原文地址:https://www.cnblogs.com/Caden-liu8888/p/6084014.html
Copyright © 2011-2022 走看看