for 无$变量 in 字符串 do done |
一简单的字符串 枚举遍历法,利用for in格式对字符串按空格切份的功能 SERVICES="80 for |
#!/bin/sh for i in a b c do echo "i is $i" done |
[macg@machome ~]$ sh test.sh i is a i is b i is c |
#!/bin/bash for i in *.h ; do cat ${i}.h done |
[macg@vm test]$ ./tip.sh cat: *.h.h: No such file or directory $i代表的是整个路径,而不是*.h里的.h前面的部分 |
改正
#!/bin/bash for i in *.h do cat $i done |
[macg@vm test]$ echo hahaha >>1.h [macg@vm test]$ echo ha >>2.h [macg@vm test]$ ./tip.sh hahaha ha |
例2:
for i in /etc/profile.d/*.sh done |
/etc/profile.d/alias.sh, /etc/profile.d/default.sh |
test() { } $*是字符串:以"参数1 参数2 ... " 形式保存所有参数 $i是变量i的应用表示 |
[macg@machome ~]$ sh test.sh p1 p2 p3 p4 i is p1 i is p2 i is p3 i is p4 |
[root@vm testtip]# ls aaa.txt bbb.txt |
[root@vm testtip]# cat go.sh for i in *.txt do mv "$i" "$i.bak" done |
[root@vm testtip]# sh go.sh [root@vm testtip]# ls aaa.txt.bak |
for i in $(ls *.txt) do echo $i done |
[macg@machome ~]$ sh test 111-tmp.txt 111.txt 22.txt 33.txt站长教学网 eduyo.com |
或者说,利用for in克服` `和$( ) 的多行合为一行的缺陷
LIST="rootfs usr data data2" for d in $LIST; do done |