Shell中for循环详解

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情


关于shell中的for循环用法很多,总结大致如下:

1、 for((i=1;i<=10;i++));do echo $(expr $i \* 4);done
2、在shell中常用的是 for i in $(seq 10) 
3、for i in `ls`   //反引号
4、for i in ${arr[@]}   
5、for i in $* ; do 
6、for File in /proc/sys/net/ipv4/conf/*/accept_redirects; do 
7、for i in f1 f2 f3 ;do 
8、for i in *.txt 
9、for i in $(ls *.txt) 
#for in语句与` `和$( )合用,利用` `或$( )的将多行合为一行的缺陷,实际是合为一个字符串数组for num in $(seq 1 100)
10、LIST="rootfs usr data data2" 
        for d in $LIST; do 
#用for in语句自动对字符串按空格遍历的特性,对多个目录遍历 
11、for i in {1..10}
12、for i in stringchar {1..10}
13、awk 'BEGIN{for(i=1; i<=10; i++) print i}'


注意:AWK中的for循环写法和C语言一样的

例如:

#!/bin/sh

arr=("a" "b" "c") 
echo "arr is (${arr[@]})"
echo "item in array:"

for i in ${arr[@]} 
do
	echo "$i"
done 

echo "参数,\$*表示脚本输入的所有参数:"
for i in $* ; do
	echo $i 
done 

echo '处理文件 /proc/sys/net/ipv4/conf/*/accept_redirects:'
for File in /proc/sys/net/ipv4/conf/*/accept_redirects; do
	echo $File 
done 

echo "直接指定循环内容"
for i in f1 f2 f3 ;do
	echo $i 
done 

echo 
echo "C 语法for 循环:"
for (( i=0; i<10; i++)); 
do
	echo $i 
done 
 

shell中for循环用法,一个循环都弄了一会 ,找了几个不同的方法来实现输出1-100间可以被3整除的数
1.用(())
#!/bin/bash
clear

for((i=1;i<100;i++))
do
	if((i%3==0))
	then
		echo $i
	else
		continue
	fi
done
2.使用`seq 100`
#!/bin/bash
clear

for i in `seq 100`
do
	if((i%3==0))
	then
		echo $i
	continue
	fi
done
3.使用while
#!/bin/bash
clear

i=1
while(($i<100))
do
	if(($i%3==0))
	then
		echo $i
	fi
	i=$(($i+1))
done
在shell用for循环做数字递增的时候发现问题,特列出shell下for循环的几种方法:
1.for i in `seq 1 1000000`;do
echo $i
done
用seq 1 10000000做递增,之前用这种方法的时候没遇到问题,因为之前的i根本就没用到百万(1000000),因为项目需要我这个数字远大于百万,发现用seq 数值到 1000000时转换为1e+06,根本无法作为数字进行其他运算,或者将$i有效、正确的取用,遂求其他方法解决,如下
2.for((i=1;i<10000000;i++));do

echo $i

done

3.
i=1
while(($i<10000000));do
echo $i
i=`expr $i + 1`
done
因为本方法调用expr故运行速度会比第1,第2种慢不少不过可稍作改进,将i=`expr $i + 1`改为i=$(($i+1))即可稍作速度的提升,不过具体得看相应shell环境是否支持
4.for i in {1..10000000;do
echo $i
done
小结:其实选用哪种方法具体还是得由相应的shell环境的支持,达到预期的效果,再考虑速度方面的问题。

我在Linux平台下的测试用例:

#!/bin/bash
#Author: tianmo
#Date: 06-03 2012
#FileName using of 'for'

echo "HelloWorld one"

for i in `seq 1 5`
do
	for j in `seq 1 $i`
	do
		echo -n  $j" " 
	done
	echo ""
done

echo "HelloWorld two"

for i in $(seq 5)
do
	for j in $(seq $i)
	do
		echo -n  $j" " 
	done
	echo ""
done

echo "HelloWorld three"

for((i = 1; i <= 5; ++ i));
do
	for((j = 1; j <= $i; ++ j))
	do
		echo -n $j ""
	done
	echo ""
done

echo "HelloWorld four"

SELECT="1 2 3 4 5"
for x in $SELECT
do
	for j in $(seq 1 $x)
	do
		echo -n $j ""
	done
	echo " "
done

echo "HelloWorld four"
#find the type file of *.txt
for i in *.txt
do
	echo ${i} ""
done
echo "HelloWorld five"
for i in $(ls *.txt)
do
	echo ${i} ""
done

echo "HelloWorld six"

for i in `cat tianmo.txt`
do
	echo $i ""
done
for i in $(cat tianmo.txt)
do
	echo $i ""
done

echo "HelloWorld seven"

for((i=1;i<=10;i++));
do
	echo $(expr $i \* 4);
done


待续 。。。



Shell for i in 循环详解 1.引子 系统进程是通过虚拟地址访问内存,但是CPU必须把它转换程物理内存地址才能真正访问内存。为了提高这个转换效率,CPU会缓存最近的虚拟内存地址和物理内存地址的映射关系,并保存在一个由CPU维护的映射表中。为了尽量提高内存的访问速度,需要在映射表中保存尽量多的映射关系。 而在Linux中,内存都是以页的形式划分的,默认情况下每页是4K,这就意味着如果物理内存很大,则映射表的条目将 阅读详情

相关推荐

循环结构 for i in循环】【i++】【shell 循环while语句】【嵌套循环】【循环until语句】【循环控制shift、continue、break exit】

文章目录标题shell脚本 迷茫期shell脚本 加速执行脚本 一秒执行多个shell编程-循环结构 for i in循环实战1:for i ini++实战 i++for循环批量创建用户shell 循环while语句i++进行解决死循环#while循环批量创建用户:read line嵌套循环循环里面套循环shell循环until语句shell 循环控制shift、continue、break、exit练习shell脚本 标题shell脚本 迷茫期 shell脚本 加速执行脚本 一秒执行多个 she

mingqing的博客 1万+

shell中的for循环用法详解

for 命令: for i in 的各种用法 : for i infile1” “file2” “file3” for i in /boot/* for i in /etc/*.conf for i in $(seq -w 10) –》等宽的01-10 for i in {1..10} for i in $( ls ) for I in $(< file) for i

阿鹏的笔记 35万+

shell ——for in 循环

shell 编程——for in 循环 -------for in 格式------- for$变量in字符串do$变量done 一简单的字符串 枚举遍历法,利用for in格式对字符串按空格切份的功能 SERVICES="80222511080002320213306...

weixin_33713350的博客 2070

shell学习二十五--for循环

一、for循环结构 1、for循环语法 for 变量 in 变量取值列表 do     指令 done 提示:在此结构中“in 变量取值列表”可以省略,省略时相当于in$@”,使用for i就相当于使用for i in$@”。 2、c语言for循环语法 for ((exp1;exp2;exp3)) do     指令 done 实例1: [root@node

wolf 1665

for循环下标 shell_shell中的for循环用法详解

for 命令:for i in 的各种用法 :for i infile1” “file2” “file3”for i in /boot/*for i in /etc/*.conffor i in $(seq -w 10) --》等宽的01-10for i in {1…10}for i in $( ls )for I in $(< file)for i in$@” --》取所有位置参数...

weixin_33335559的博客 1582

shellfor循环详解

一、for循环介绍 1)for循环又叫条件循环,又叫做for i infor的一种语法,为了节省时间,节省内存。 2)循环的优点: 1、节省内存 2、结构更清晰 3、节省时间成本 二、for语法的三种赋值方式 for语法一: 1、for直接赋值格式: for i in a b c.... do commands(代码块) done i为变量,in为赋值:把a b c...赋值给i 2、使用命令赋值 例如: for i in `seq 1 9` do echo $i done

m0_46593782的博客 4411

Shell循环语句详解--for循环

文章目录一.for循环基本格式二.for循环脚本2.1测试主机状态2.2添加用户2.3乘法表三.总结 引言:在shell编程中,除了选择判断之外,对一些特殊情况需要进行循环操作,比如遍历目录文件,批量添加用户等操作,都需要循环操作 一.for循环基本格式 语法格式: for 变量名 in 取值列表 do 命令 done for循环执行次数,取决于取值列表中的变量个数 for i in {1..5};do echo $i;done {1..5}为取值范围1到5 echo $i 输出当前的取值 for(

夏颜的博客 11万+

linux for in 字符串,Shell for in循环详解

for 循环Linux Shell 中最常用的结构。for 循环主要有两种常用的结构:第一种结构是列表 for 循环;第二种结构是 C 语言风格的 for 循环。1、列表for循环结构列表 for 循环语句用于将一组命令执行已知的次数,语句基本格式如下:for variable in (list)docommandsdonedo 和 done 之间的命令成为循环体,执行次数和 list 列表中...

weixin_31885729的博客 7483

linuxfor循环脚本变量自增,Shell for循环for int循环详解

除了 while 循环和 until 循环Shell 脚本还提供了 for 循环,它更加灵活易用,更加简洁明了。Shell for 循环有两种使用形式,下面我们逐一讲解。C语言风格的 for 循环C语言风格的 for 循环的用法如下:for((exp1; exp2; exp3))dostatementsdone几点说明:exp1、exp2、exp3 是三个表达式,其中 exp2 是判断条件,fo...

weixin_35682010的博客 2756

Shell教程_在Bash_Shell中使用for循环详解

Shell教程 在Bash_Shell中使用for循环详解

goufeng93的博客 1464

shell中while与for循环详解

1. while循环 while循环shell脚本中最简单的一种循环,当条件满足时,while重复的执行一组语句,当条件不满足时,就退出while循环 Shell while循环的用法如下: while condition do statements done condition表示判断条件,statements表示要执行的语句(可以是一条,也可以有多条),do 和 done都是shell中...

qq_36417677的博客 9575

for循环批量写文件 shell_shell中的for循环用法详解

for 命令:for i in 的各种用法 :for i infile1” “file2” “file3”for i in /boot/*for i in /etc/*.conffor i in $(seq -w 10) --》等宽的01-10for i in {1…10}for i in $( ls )for I in $(< file)for i in$@” --》取所有位置参数...

weixin_39597868的博客 1235

csh for循环_shell中的for循环用法详解_linux shell

这篇文章主要介绍了shell中的for循环用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧for 命令:for i in 的各种用法 :for i infile1” “file2” “file3”for i in /boot/*for i in /etc/*.conffor i in $(seq -w 10) --》...

weixin_39927378的博客 7832

shell脚本详解(三)——循环语句之for循环

shell脚本详解(三)——循环语句之for循环一、echo命令 – 输出字符串或提取Shell变量的值1、格式2、常用参数3、示例二、for循环语句1、for循环结构2、例题①、例题1②、例题2③、例题3④、例题4⑤、例题5⑥、例题6⑦、例题7 一、echo命令 – 输出字符串或提取Shell变量的值 1、格式 2、常用参数 常用参数 说明 -n 表示输出不换行

想成功,靠自己 1万+

Shell for循环详解

Shell中的for循环是一个处理批量数据的利器,其核心就是遍历列表。处理已知的、固定的少量数据:直接列出或用花括号{}。处理命令输出、文件列表等动态数据:使用命令替换$()。需要复杂的循环控制(如精确计数):使用C语言风格的((...))。理解并灵活运用for循环的各种形式,是编写高效、自动化Shell脚本的关键一步。

zhaominyong的专栏 180
上一篇: linux expr命令参数及用法详解
下一篇: linux运维常用命令
tianmo2010
博客等级 码龄17年 986粉丝 515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值