zoukankan      html  css  js  c++  java
  • shell脚本中,for基于列表进行循环的实现方法

    需求描述:

      在写脚本中需要这么个需求,需要对一个列表中的值进行循环

      比如,列表中的值mysqld,zookeeper,hbase

      简单来说,for基于列表值的循环。

    脚本测试过程

    1.测试脚本

    #!/bin/bash
    
    for i in {mysql,zookeeper,hbase}
      do
       echo $i
    done

     或者

    #!/bin/bash
    
    for i in mysql zookeeper hbase
      do
       echo $i
    done

     2.脚本执行结果

    [root@redhat6 ~]# ./ts.sh
    mysql
    zookeeper
    hbase
    说明:for循环中{}大括号中,列出了所有需要循环的值,每个值之间用逗号隔开。

    3.大括号中如果使用空格隔开,则是下面的执行结果

    [root@redhat6 ~]# ./ts.sh
    {mysql
    zookeeper
    hbase}
    4.将所有的需要循环的列表的值赋给一个变量,然后通过for循环展示

    ps_name='mysql zookeeper hbase'
    
    for i in $ps_name  #此处就不使用大括号了。
      do
       echo $i
    done

     5.再次执行修改的脚本

    [root@redhat6 ~]# ./ts.sh
    mysql
    zookeeper
    hbase

    备注:执行也能达到同样的效果,不过此时,in后面不需要使用大括号了,同时将多个值赋给一个变量的时候,中间用空格分开。

    6.如果在in后面仍旧使用大括号,执行结果

    #!/bin/bash
    
    ps_name='mysql zookeeper hbase'
    
    for i in {$ps_name}
      do
       echo $i
    done

     [root@redhat6 ~]# ./ts.sh
    {mysql     #执行结果多输出了{
    zookeeper
    hbase}  #执行结果多输出}
    备注:所以,使用这种方式时,不要使用大括号。

    小结

      for列表即in后面,本该就是多个值之间用空格隔开这种情况,如果要用大括号

      那么,各个值被括起来,中间用逗号隔开,in后面使用引用变量,不要使用大括号。

    文档创建时间:2018年3月9日10:52:15

  • 相关阅读:
    poj 2135 最小费用最大流初步
    HDU4864 贪心好题
    HDU 5643 约瑟夫环的应用
    HDU 5642 多重集排列数 递推
    HDU 5640
    HDU 2819 最大匹配
    poj 1988 多校联赛 带权并查集
    HDU 2817 多校联赛1
    HDU 2822 多校联赛1
    第二节(标识符,关键字,数据类型,运算符)
  • 原文地址:https://www.cnblogs.com/chuanzhang053/p/8532680.html
Copyright © 2011-2022 走看看