shell用法总结6

125 阅读2分钟

引言

  • 该系列为个人经常需要将项目代码工程化,所以需要用到shell脚本,前段时间的每日一题非典活动虽然写了不少,但是因为要满足活动要求,所以很多函数等语法无法介绍完全,该文将介绍一个函数具体详细一些的用法

正文 关于shell中的循环实现(1)

for循环-上篇(本文仅详细介绍了方式1)

  • 个人感觉一般写循环语句的场景使用for循环都可以满足,而且进行嵌套的时候for循环也更方便一些(纯个人看法,以能简洁且实现功能为中心),下面是使用for循环的两种方式
  • 方式1:for 变量名 in 取值列表(取值列表位置也有很多用法)
  • 方式2:for ((i=0;i<=10;i++))(这个更像C中的for循环,需要定义①变量起始值;②定义循环结束条件;③控制循环次数)
    • 两种格式:方式1的结构更简洁通俗一些,方式2控制循环次数更直接

关于for循环的执行流程

  • 首先将列表中的第一个值赋给变量,执行do…done循环体中的命令序列
  • 然后将列表中的第二个值赋给变量,并执行循环体中的命令序列…直到列表中的所有取值用完,最后跳至done语句,表示循环结束

首先介绍方式1:

  • 1 首先是取一个列表(列表中不能是变量,不然不识别)
    • 列表形式可以直接是 for i in a b c,也可以是for i in 1/a
    • 或者for i in {1..4}里面的两个小数点表示遍历1-4
    • 同样可以是for i in {a..e}也可以依次输出字母

  • 2 除此之外,大括号{}组合seq还有以下用法
    • for i in {1..50..2} 1-50的奇数

    • for i in {2..50..2} 1-50的偶数

    • for i in {10..1} 1-10倒序排列

    • for i in $(seq 10) 1-10正序排列

    • for i in $(seq 10 -1 1) 1-10倒序排列 (-1代表无限,上限,最大值,1表示起始)

    • for i in $(seq 1 2 10) 1-10的奇数,中间为步长

    • for i in $(seq 0 2 10) 1-10的偶数,中间为步长

    • {1…5}=seq 5

  • 3 列表也可以替换成一个文件,比如使用for i in `cat 文件名`
  • 4 不过不带循环列表执行时由用户指定参数和参数的个数决定

结尾

  • 由于for循环内容较多,光是方式1就已经介绍了这么多,为了方便后续有新内容补充,方式2由下篇文章讲解