admin 管理员组文章数量: 1086019
2024年3月19日发(作者:yarn怎么读)
forin格式
for
无$变量
in
字符串
do
$变量
done
一简单的字符串枚举遍历法,利用forin格式对字符串按空格切份的功能
SERVICES="80
3306"
forx
do
iptables
state
done
in
222511
$SERVICES
-p
-j
tcp--dport
ACCEPT
$x-m-AINPUT
--stateNEW
forvariableinvalues--------字符串数组依次赋值
#!/bin/sh
foriinabc字符串列表ABC
字符串用空格分隔,没有括号,没有逗号,然
后循环将其依次赋给变量i
变量没有$
do
echo"iis$i"
done
[macg@machome~]$
iisa
iisb
iisc
forin里,变量和*不等价
#!/bin/bash
foriin*.h;
do
cat${i}.h
done
[macg@vmtest]$./
cat:*.h.h:Nosuchfileordirectory
$i代表的是整个路径,而不是*.h里的.h前面的部分
改正
#!/bin/bash
foriin*.h
do
cat$i
done
[macg@vmtest]$echohahaha>>1.h
[macg@vmtest]$echoha>>2.h
[macg@vmtest]$./
hahaha
ha
例2:
foriin
/etc/profile.d/*.sh
do
$i
done
$i代表的是
/etc/profile.d/,
/etc/profile.d/,
/etc/profile.d/
forin对(命令行,函数)参数遍历
test()
{
locali
foriin$*;do
echo"iis$i"
done
}
$*是字符串:以"参数1参数2..."形式保存所有参数
$i是变量i的应用表示
[macg@machome~]$1p2p3p4
iisp1
iisp2
iisp3
iisp4
forin语句与通配符*合用,批量处理文件
批量改文件名
[root@vmtesttip]#ls
[root@vmtesttip]#
foriin*.txt
数组,依次循环赋值给i
do
mv"$i""$"
done
[root@vmtesttip]#
*.txt相当于一个字符串
[root@vmtesttip]#ls
.
forin语句与``和$()合用,利用``或$()的将多行合为一行的缺陷,实际是合
为一个字符串数组
foriin$(ls*.txt)
do
echo$i
done
[macg@machome~]$shtest
或者说,利用forin克服``和$()的多行合为一行的缺陷
利用forin自动对字符串按空格遍历的特性,对多个目录遍历
LIST="rootfsusrdatadata2"
fordin$LIST;do
mount/backup/$d
rsync-ax--excludefstab--delete/$d//backup/$d/
umount/backup/$d
done
版权声明:本文标题:shell编程_for_in_循环 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1710839308a575691.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论