【shell 基础(11)循环之for】带列表:空格子串、换行子串、展开、命令替换、seq;不带列表:接受参数、类C

一. 带列表的for循环

1. 语法

for var in list  
   do 
     command
   done

注意:list可以是含有空格或者是换行的字串。

  • 换行:则可以读取遍历一个文件;或者命令输出时,带有换行
  • 空格:则可以构成一个数组,或者就是字串

 

2. 例子

2.1. 循环字串

# bash for_test.sh 
this is apple
this is orange
this is banana

# cat for_test.sh 
#!/bin/bash
fruits="apple orange banana"
for fruit in ${fruits}
do
  echo "this is ${fruit}"
done

 

2.2. 展开或命令替换:数字循环

连续数字相加

cat for_test.sh 
#!/bin/bash
# 1. 使用展开
#for num in {1..5}
sum=0
# 2. 使用命令替换
for num in $(seq 1 100)
do
  let "sum+=num"
done
echo $sum

 

从1开始步长为2计算和,即计算1到100的奇数和

# cat for_test.sh 
#!/bin/bash
sum=0
for num in $(seq 1 2 100)
do
  let "sum+=num"
done
echo $sum

 

2.3 命令替换(输出换行)作为list

[ test ] # cat for_test.sh 
#!/bin/bash
for ls_name in $(ls)
do
  ls -l ${ls_name}
done
[ test ]# bash for_test.sh 
-rw-r--r-- 1 root hadoop 0 Oct 13 12:35 11
-rw-r--r-- 1 root hadoop 60 Oct 13 12:36 for_test.sh

 

二. 其他for循环

1. 不带列表的循环

通过参数的方式给for传递变量值

[root@ test]# bash for_test.sh 1 2 3 4
the var is 1
the var is 2
the var is 3
the var is 4

[root@ test]# cat for_test.sh 
#!/bin/bash
for var in $@
do
  echo the var is $var
done

 

2. 类C的for循环

[root@ test]# bash for_test.sh 
5050

[root@ test]# cat for_test.sh 
#!/bin/bash
sum=0
for (( i=1; i<=100; i++ ))
do
  let "sum+=i"
done
echo $sum
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

roman_日积跬步-终至千里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值