需求描述:
在寫腳本中需要這么個需求,需要對一個列表中的值進行循環
比如,列表中的值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