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

原文地址:https://www.cnblogs.com/chuanzhang053/p/8532680.html