美文网首页
Bash 流程控制之术

Bash 流程控制之术

作者: Manchangdx | 来源:发表于2018-07-26 14:24 被阅读0次

一、循环结构

1.1 for 循环

  • 列表 for 循环:
mcdx@ubuntu:~$ nl test.sh 
     1  sum=0
     2  for i in {1..100}
     3  do ((sum+=i))
     4  done
     5  echo $sum
mcdx@ubuntu:~$ . test.sh 
5050
  • 不带列表的 for 循环:
mcdx@ubuntu:~$ nl test.sh 
     1  sum=0
     2  for i  # 等同于 for i in $*
     3  do ((sum+=i))
     4  done
     5  echo $sum
mcdx@ubuntu:~$ bash test.sh 1 2 3 4 5
15
mcdx@ubuntu:~$ bash test.sh {1..100}
5050
  • 类似 C 语言风格的 for 循环:
mcdx@ubuntu:~$ nl test.sh 
     1  sum=0
     2  for ((i=1;i<101;i++))
     3  do
     4      ((sum+=i))
     5  done
     6  echo $sum
mcdx@ubuntu:~$ . test.sh 
5050

1.2 while 循环

mcdx@ubuntu:~$ nl test.sh 
     1  sum=0
     2  n=1
     3  while ((n<101)); do
     4      ((sum+=n))
     5      ((n++))
     6  done
     7  echo $sum
mcdx@ubuntu:~$ . test.sh 
5050

1.3 until 循环

mcdx@ubuntu:~$ nl test.sh 
     1  sum=0
     2  n=1
     3  until [[ $n -gt 100 ]]; do
     4      let sum+=n
     5      let n++
     6  done
     7  echo $sum
mcdx@ubuntu:~$ . test.sh 
5050

1.4 select 循环

mcdx@ubuntu:~$ nl a.sh 
     1  select player in Nash James Kobe Durant Wade Bosh
     2  do echo Hello, my name is $player.; done
mcdx@ubuntu:~$ PS3='选个号:'  # 设置 select 的提示符
mcdx@ubuntu:~$ . a.sh 
1) Nash
2) James
3) Kobe
4) Durant
5) Wade
6) Bosh
选个号:1
Hello, my name is Nash.
选个号:2
Hello, my name is James.
选个号:6
Hello, my name is Bosh.
选个号:

1.5 嵌套循环

mcdx@ubuntu:~$ nl a.sh 
     1  n=3
     2  while [ $n -gt 0 ]
     3  do 
     4      echo "n 等于 $n"
     5      let n--
     6      for ((i=2;i>0;i--))
     7      do
     8          echo i 等于 $i
     9      done
    10      echo '-------------------'
    11  done
mcdx@ubuntu:~$ . a.sh 
n 等于 3
i 等于 2
i 等于 1
-------------------
n 等于 2
i 等于 2
i 等于 1
-------------------
n 等于 1
i 等于 2
i 等于 1
-------------------

二、循环控制

2.1 break 强制结束循环
可以看到 break 执行后,7 以后的数字就没有再输出了,也就是结束了循环

mcdx@ubuntu:~$ nl a.sh 
     1  num=1
     2  while [ $num -lt 11 ]
     3  do 
     4      echo $num
     5      if [ $num = 7 ]
     6      then break
     7      fi
     8      let num++
     9  done
mcdx@ubuntu:~$ . a.sh 
1
2
3
4
5
6
7

2.2 continue 略过当前循环中接下来的步骤

mcdx@ubuntu:~$ nl a.sh 
     1  for i in {1..100}
     2  do
     3      if [[ $i -gt 4 && $i -lt 97 ]]; then 
     4          continue
     5      fi
     6      echo $i
     7  done
mcdx@ubuntu:~$ . a.sh 
1
2
3
4
97
98
99
100

相关文章

  • Bash 流程控制之术

    一、循环结构 1.1 for 循环 列表 for 循环: 不带列表的 for 循环: 类似 C 语言风格的 for...

  • Linux - Bash - 流程控制

    sh的流程控制不可为空,不能什么都不能做,不能像php这样: 在sh/bash里可不能这么写,如果else分支没有...

  • bash之流程控制

    一:if else 和Java、PHP等语言不一样,sh的流程控制不可为空在sh/bash里可不能这么写,如果el...

  • 西拉法叶的雪:你所知道的顶层设计到底是什么?(15)

    平台模式——产业链整体控制之术(下) 平台模式的设计,要具备以下的流程与要点: 平台模式设计流程第一,针对整条产业...

  • Shell 流程控制

    和Java、PHP等语言不一样,sh的流程控制不可为空,如(以下为PHP流程控制写法): 在sh/bash里可不能...

  • 八、Shell 流程控制

    和Java、PHP等语言不一样,sh的流程控制不可为空,如(以下为PHP流程控制写法): 在sh/bash里可不能...

  • Bash流程控制语句总结

    本文中的表格语法这一列表示各种语句的一个相对独立的语法单元,要在同一行执行它们,只要在它们中间插入分号即可(cas...

  • linux bash流程控制while

    while condition do command done #!/bin/bash int=1 while((...

  • day02-01-for

    流程控制之跳出for循环

  • day03

    今日内容介绍 1、引用类型变量的创建及使用 2、流程控制语句之选择语句 3、流程控制语句之循环语句 4、循环高级 ...

网友评论

      本文标题:Bash 流程控制之术

      本文链接:https://www.haomeiwen.com/subject/prrbmftx.html