先通过一个例子认识下shell的for循环:
#!/bin/bash echo "----start----" for((i=0;i<=100;i++)) do if((i%3==0)) then echo $i >> date.txt; fi done cat date.txt |xargs -n 20
执行结果:
kldong@ubuntu:~/learning/shell$ ./test_for.sh ----start---- 0 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 63 66 69 72 75 78 81 84 87 90 93 96 99
以上程序的目的简单,就是找出100以内可以被3整除的整数,并以每行20个打印出来。
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 |
for i in *.h ; 改正 for i in *.h [macg@vm test]$ ./tip.sh 例2:
i is p1 [root@vm testtip]# ls
或者说,利用for in克服` `和$( ) 的多行合为一行的缺陷
#!/bin/bash
do
cat ${i}.h
done
[macg@vm test]$ ./tip.sh
cat: *.h.h: No such file or directory
$i代表的是整个路径,而不是*.h里的.h前面的部分
#!/bin/bash
do
cat $i
done
[macg@vm test]$ echo hahaha >>1.h
[macg@vm test]$ echo ha >>2.h
hahaha
ha
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 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
aaa.txt.bak
kkk.txt.bak
for i in $(ls *.txt)
do
echo $i
done
[macg@machome ~]$ sh test
111-tmp.txt
111.txt
22.txt
33.txt
LIST="rootfs usr data data2"
for d in $LIST; do
done
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 |
for i in *.h ; 改正 for i in *.h [macg@vm test]$ ./tip.sh 例2:
i is p1 [root@vm testtip]# ls
或者说,利用for in克服` `和$( ) 的多行合为一行的缺陷
#!/bin/bash
do
cat ${i}.h
done
[macg@vm test]$ ./tip.sh
cat: *.h.h: No such file or directory
$i代表的是整个路径,而不是*.h里的.h前面的部分
#!/bin/bash
do
cat $i
done
[macg@vm test]$ echo hahaha >>1.h
[macg@vm test]$ echo ha >>2.h
hahaha
ha
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 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
aaa.txt.bak
kkk.txt.bak
for i in $(ls *.txt)
do
echo $i
done
[macg@machome ~]$ sh test
111-tmp.txt
111.txt
22.txt
33.txt
LIST="rootfs usr data data2"
for d in $LIST; do
done
#!/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 |
for i in *.h ; 改正 for i in *.h [macg@vm test]$ ./tip.sh 例2:
i is p1 [root@vm testtip]# ls
或者说,利用for in克服` `和$( ) 的多行合为一行的缺陷
#!/bin/bash
do
cat ${i}.h
done
[macg@vm test]$ ./tip.sh
cat: *.h.h: No such file or directory
$i代表的是整个路径,而不是*.h里的.h前面的部分
#!/bin/bash
do
cat $i
done
[macg@vm test]$ echo hahaha >>1.h
[macg@vm test]$ echo ha >>2.h
hahaha
ha
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 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
aaa.txt.bak
kkk.txt.bak
for i in $(ls *.txt)
do
echo $i
done
[macg@machome ~]$ sh test
111-tmp.txt
111.txt
22.txt
33.txt
LIST="rootfs usr data data2"
for d in $LIST; do
done