Shell脚本之for循环

语法格式

语法一:

for var in value1 value2 ......
	do
		commands
done

示例:

# 循环输出1-9数字
#!/bin/bash
for i in `seq 1 9`
	do
		echo $i
done

语法二:

# C式的for命令
for ((变量; 条件; 自增减运算))
	do
		代码块
done

示例1:

#!/bin/bash
for ((i=1;i<10;i++))
	do
		echo $i
done

示例2:

#!/bin/bash
for (( a=0,b=9;a<10;a++,b-- ))
	do
		echo $a $b
done

# 执行结果
0 9
1 8
2 7
3 6
4 5
5 4
6 3
7 2
8 1
9 0

for无限循环 使用(( ;; )) 条件可以实现无限循环

#!/bin/bash
for ((;;))
	do
		echo "hehe"
done

例:

#!/bin/bash
# 1. for直接赋值
for var in 1 2 3 4 5 6 7 8 9
	do
		echo $var
		sleep 1
done

# 2. 使用命令赋值
for var in `seq 1 9`
	do
		echo $var
		sleep 1
done

# 3. 赋值是一个字符串
for var in zozo\'s is cool, zozo\'s is nice
	do
		echo "word: $var"
done

# 输出
word: zozo's
word: is
word: cool,
word: zozo's
word: is
word: nice

# 4. for语法---C格式
for (( i=1;i<10;i++ ))
	do
		echo $i
		sleep 1
done
Shell脚本中,`for`循环是一种非常常用的控制结构,用于重复执行一段代码块,尤其适用于需要对多个项目进行相同操作的场景。Shell中的`for`循环主要有以下几种形式: ### 1. 基于列表的`for`循环 这是最常见的一种`for`循环形式,语法如下: ```bash for variable in list do commands done ``` 其中,`list`是一个由空格分隔的元素列表,`variable`会在每次循环中依次取列表中的值。例如: ```bash for i in 1 2 3 4 5 do echo "Number: $i" done ``` 此脚本会依次输出数字1到5[^2]。 ### 2. 不带列表的`for`循环 当没有显式提供列表时,`for`循环会默认使用脚本执行时传入的参数作为列表。这种形式的语法如下: ```bash for variable do commands done ``` 例如,以下脚本接受命令行参数,并对每个参数输出“hello”: ```bash #!/bin/bash for i do echo "hello" done ``` 运行时传入参数如`./script.sh a b c`,将输出三次“hello”[^3]。 ### 3. 类C风格的`for`循环 Shell也支持类似C语言风格的`for`循环,适用于需要明确控制循环次数的情况。其语法如下: ```bash for (( expr1; expr2; expr3 )) do commands done ``` 其中: - `expr1`:定义并初始化循环变量; - `expr2`:循环条件判断; - `expr3`:循环变量的更新操作。 例如: ```bash for (( i=1; i<=5; i++ )) do echo "Iteration $i" done ``` 此脚本将输出从1到5的迭代次数[^3]。 ### 4. 嵌套`for`循环 可以在一个`for`循环内部再嵌套另一个`for`循环,以实现更复杂的逻辑。例如: ```bash for (( i=1; i<=3; i++ )) do for (( j=1; j<=2; j++ )) do echo "i=$i, j=$j" done done ``` 该脚本将输出所有`i`和`j`的组合值[^4]。 ### 5. 使用特殊选项控制输出 在实际应用中,常常会结合`echo`命令的特殊选项来控制输出格式。例如,`-n`选项可以防止换行,而`-e`选项允许解释转义字符。以下是一个使用`-n`的示例: ```bash for i in 1 2 3 do echo -n "$i " done echo ``` 这段脚本将在同一行输出`1 2 3`,并在最后换行[^4]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值