shell用法总结5

109 阅读1分钟

引言

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

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

for循环-下篇(本文继续介绍了方式2)

  • 注: 方式2:for ((i=0;i<=10;i++))(这个更像C中的for循环,需要定义①变量起始值;②定义循环结束条件;③控制循环次数)
  • for ((expr1;expr2;expr3));do command;done
  • 示例 for ((i=1;i<=5;i++));do echo $i;done

  • 就比如最常见的计算1-100累加和,使用方法2实现就比较容易理解,因为其特点就是循环次数比较直接
#!/bin/bash

sum=0

for ((i=1;i<=100;i+=1))

do

  let sum=$i+$sum

done

echo "1-100的奇数和为:$sum"
  • 又或者打印1-100之间的奇树
#!/bin/bash
for ((i=1;i<=100;i+=2))
do
	echo $i
done
  • 当然在for循环中也可以加上if条件,等等内容实现想要的功能

关于多层嵌套

  • 在上篇中就已经提到,方式2在嵌套场景下书写个人认为比较简洁方便

  • 例如常见的打印99乘法表
#!/bin/bash
 
for((i=0;i<9;i++))
do
  for((j=0;j<=i;j++))
  do
  sum=i*j
  echo  -n "$i*$j=$sum "
  done
 
  echo  " " 
done
  • 又或者是打印菱形

#打印上半部分
for((i=0;i<3;i++))
do
  for((j=0;j<=2-i;j++))
  do
    echo -n " "
  done
  for((j=0;j<=2*i;j++))
  do
    echo -n "*"
  done
echo " "
done
#打印下半部分
for((i=0;i<2;i++))
do
  for((j=0;j<=1+i;j++))
  do
    echo -n " "
  done
  for((j=0;j<=2-2*i;j++ ))
  do
    echo  -n "*"
  done
echo " "
done
  • 上述方法同样也可以使用方法1实现,但是相对来说实现起来较为繁琐,方法2就相对方便一些,不过方法的好坏还是看使用的具体场景,适合的才是最好的

结尾

  • 相较于方法1,方法2其实所用场景对个人来说不是很多,也可能是我使用方法2不熟练的原因,所介绍的例子和场景相对较少,待后续遇到继续补充
  • 接下来就是关于其他的循环方法,for循环到此结束