shell编程(十三)for循环

一    for循环结构

for 变量'名' in 变量取值'列表'

do

    指令…

done

备注: '列表'默认以'空格'分割

说明: 在此结构中"in 变量取值列表"可省略,省略时相当于in "$@",使用'for i'就相当于使用'for i in "$@"'

①  如何理解变量列表

'文件'列表、IP地址、'文件'的内容等
#!/bin/bash
#for i in 0 1 2 3 4 5       # (1)直接列出来-->序列
#for i in {0..5}            # (2)使用{}的等价方式!
for i in `seq 5`            # (3)命令的输出作为列表
#for i in `ls`              # 查看文件的内容
do
        echo $i
done

seq命令

②  每四个为一行

# 产生{1.10}
seq 10 > a.log
[root@random mnt]# cat a.log |xargs -n4
1 2 3 4
5 6 7 8
9 10
# 专业-->简化的方式!
[root@random mnt]# xargs -n4 < a.log 
1 2 3 4
5 6 7 8
9 10

③  C语言for循环结构

for((exp1;exp2;exp3))

do

      指令...

done

  批量生成10个随机数

#!/bin/bash
for((i=1;i<=10;i++))
do
  mkdir -p ./test
  touch ./test/`echo $RANDOM|md5sum|cut -c 1-8`_finished.jpg 
done 

⑤  批量修改文件名

#!/bin/bash
# 思路:把要改的名字凭借出来!
for i in `ls /root/test`
do
  cd /mnt/test
  # 核心是要改成什么名字
  mv $i `echo $i|sed 's#_finished.jpg#.html#g'`          # sed对应的模式-->对应的文件名字
done 

# 不用rename、awk、sed、只用for循环!

等价方法

# echo $file | sed 's#_finished.html#jpg#g'  -->方法1

# 通过_作为分割符号,分成两个部分-->注意:空格

# $0表示该行、$1表示_前面的部分,通过bash来执行!

ls|awk -F '[_]' '{print "mv " $0,$1".html"}'|bash 

# 比较专业的

rename "_finished.html" ".jpg" *.html 

# 说明:rename "改什么" "改成什么" 对谁进行修改

# for循环就是重复-->要先搞定一个!

⑥  for循环实现1+2+3+…+100

#!/bin/bash
for ((i=1;i<=100;i++))
do
  ((sum+=$i))
done
echo "sum=${sum}" 

等价方式seq生成变量列表

#!/bin/bash
for i in `seq 100`
do
  let sum+=i
done
echo "sum=${sum}" 

二    循环控制的流程关键字

+++++++++++++'break continue exit return 对比'+++++++++++++

break、continue、exit一般用于循环结构中控制循环(for、while、if)的走向

break n:n表示跳出循环的层数,如果省略n表示跳出"整个循环"

continue n:n表示退到第n层继续循环,如果省略n表示跳过本次循环,"忽略本次"循环的剩余代码,进入循环的下一次循环

exit n:退出"当前shell程序"(脚步),n为返回值。n也可以省略,再下一个shell里通过$?接收这个n值

return n:用于在函数里,作为"函数的返回值",用于判断函数执行是否正确,推出shell程序的对应函数

  练习1

#!/bin/bash
for((i=0;i<=5;i++))
do
  if [ $i -eq 3 ];then
  #continue
  #break
  exit
  fi
  echo $i
done
echo "ok" 

# 体会这三者的含义
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值