7.1 if 判断

1.基本语法

if [ 条件判断式 ];then

程序

fi

或者

if [ 条件判断式 ]

then

程序

fi

注意事项:

(1)[ 条件判断式 ],中括号和条件判断式之间必须有空格

(2)if后要有空格

2.案例实操

(1)输入一个数字,如果是1,则输出banzhang zhen shuai,如果是2,则输出cls zhen mei,如果是其它,什么也不输出。

  1. [atguigu@hadoop101 datas]$ touch if.sh
  2. [atguigu@hadoop101 datas]$ vim if.sh
  3.  
  4. #!/bin/bash
  5.  
  6. if [ $ -eq "" ]
  7. then
  8. echo "banzhang zhen shuai"
  9. elif [ $ -eq "" ]
  10. then
  11. echo "cls zhen mei"
  12. fi
  13.  
  14. [atguigu@hadoop101 datas]$ chmod if.sh
  15. [atguigu@hadoop101 datas]$ ./if.sh
  16. banzhang zhen shuai

7.2 case 语句

1.基本语法

case $变量名 in

"值1")

如果变量的值等于值1,则执行程序1

;;

"值2")

如果变量的值等于值2,则执行程序2

;;

…省略其他分支…

*)

如果变量的值都不是以上的值,则执行此程序

;;

esac

注意事项:

1) case行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。

2) 双分号“;;”表示命令序列结束,相当于java中的break。

3) 最后的“*)”表示默认模式,相当于java中的default。

2.案例实操

(1)输入一个数字,如果是1,则输出banzhang,如果是2,则输出cls,如果是其它,输出renyao。

  1. [atguigu@hadoop101 datas]$ touch case.sh
  2. [atguigu@hadoop101 datas]$ vim case.sh
  3.  
  4. !/bin/bash
  5.  
  6. case $ in
  7. "")
  8. echo "banzhang"
  9. ;;
  10.  
  11. "")
  12. echo "cls"
  13. ;;
  14. *)
  15. echo "renyao"
  16. ;;
  17. esac
  18.  
  19. [atguigu@hadoop101 datas]$ chmod case.sh
  20. [atguigu@hadoop101 datas]$ ./case.sh

7.3 for 循环

1.基本语法1

for (( 初始值;循环控制条件;变量变化 ))

do

程序

done

2.案例实操

(1)从1加到100

  1. [atguigu@hadoop101 datas]$ touch for1.sh
  2. [atguigu@hadoop101 datas]$ vim for1.sh
  3.  
  4. #!/bin/bash
  5.  
  6. s=
  7. for((i=;i<=;i++))
  8. do
  9. s=$[$s+$i]
  10. done
  11. echo $s
  12.  
  13. [atguigu@hadoop101 datas]$ chmod for1.sh
  14. [atguigu@hadoop101 datas]$ ./for1.sh
  15. “”

3.基本语法2

for 变量 in 值1 值2 值3…

do

程序

done

4.案例实操

(1)打印所有输入参数

  1. [atguigu@hadoop101 datas]$ touch for2.sh
  2. [atguigu@hadoop101 datas]$ vim for2.sh
  3.  
  4. #!/bin/bash
  5. #打印数字
  6.  
  7. for i in $*
  8. do
  9. echo "ban zhang love $i "
  10. done
  11.  
  12. [atguigu@hadoop101 datas]$ chmod for2.sh
  13. [atguigu@hadoop101 datas]$ bash for2.sh cls xz bd
  14. ban zhang love cls
  15. ban zhang love xz
  16. ban zhang love bd

(2)比较$*和$@区别

(a)$*和$@都表示传递给函数或脚本的所有参数,不被双引号“”包含时,都以$1 $2 …$n的形式输出所有参数。

  1. [atguigu@hadoop101 datas]$ touch for.sh
  2. [atguigu@hadoop101 datas]$ vim for.sh
  3.  
  4. #!/bin/bash
  5.  
  6. for i in $*
  7. do
  8. echo "ban zhang love $i "
  9. done
  10.  
  11. for j in $@
  12. do
  13. echo "ban zhang love $j"
  14. done
  15.  
  16. [atguigu@hadoop101 datas]$ bash for.sh cls xz bd
  17. ban zhang love cls
  18. ban zhang love xz
  19. ban zhang love bd
  20. ban zhang love cls
  21. ban zhang love xz
  22. ban zhang love bd

(b)当它们被双引号“”包含时,“$*”会将所有的参数作为一个整体,以“$1 $2 …$n”的形式输出所有参数;“$@”会将各个参数分开,以“$1” “$2”…”$n”的形式输出所有参数。

  1. [atguigu@hadoop101 datas]$ vim for.sh
  2.  
  3. #!/bin/bash
  4.  
  5. for i in "$*"
  6. #$*中的所有参数看成是一个整体,所以这个for循环只会循环一次
  7. do
  8. echo "ban zhang love $i"
  9. done
  10.  
  11. for j in "$@"
  12. #$@中的每个参数都看成是独立的,所以“$@”中有几个参数,就会循环几次
  13. do
  14. echo "ban zhang love $j"
  15. done
  16.  
  17. [atguigu@hadoop101 datas]$ chmod for.sh
  18. [atguigu@hadoop101 datas]$ bash for.sh cls xz bd
  19. ban zhang love cls xz bd
  20. ban zhang love cls
  21. ban zhang love xz
  22. ban zhang love bd

7.4 while 循环

1.基本语法

while [ 条件判断式 ]

do

程序

done

2.案例实操

(1)从1加到100

  1. [atguigu@hadoop101 datas]$ touch while.sh
  2. [atguigu@hadoop101 datas]$ vim while.sh
  3.  
  4. #!/bin/bash
  5. s=
  6. i=
  7. while [ $i -le ]
  8. do
  9. s=$[$s+$i]
  10. i=$[$i+]
  11. done
  12.  
  13. echo $s
  14.  
  15. [atguigu@hadoop101 datas]$ chmod while.sh
  16. [atguigu@hadoop101 datas]$ ./while.sh

shell专题(七):流程控制(重点)的更多相关文章

  1. Shell命令和流程控制

    Shell命令和流程控制 在shell脚本中可以使用三类命令: 1)Unix 命令: 虽然在shell脚本中可以使用任意的unix命令,但是还是由一些相对更常用的命令.这些命令通常是用来进行文件和文字 ...

  2. shell脚本之流程控制

      shell脚本之流程控制 shell脚本之流程控制 条件语句 条件判断 循环语句for,while,until for循环 while循环 until循环 循环控制语句continue 循环控制语 ...

  3. 【Shell 编程基础第二部分】Shell里的流程控制、Shell里的函数及脚本调试方法!

    http://blog.csdn.net/xiaominghimi/article/details/7603003 本站文章均为李华明Himi原创,转载务必在明显处注明:转载自[黑米GameDev街区 ...

  4. Shell脚本学习 - 流程控制和函数

    继续Shell的学习.上两篇是关于基本数据类型,基本语法以及运算符相关,这一篇是流程控制相关(if, for, while) 流程控制 if else 流程控制不可为空,如果else没有语句执行,就不 ...

  5. shell运算符与流程控制-2

    1.shell运算符 1.1.算数运算符 原生的bash不支持算数运算,可以通过其它方式实现例如expr. `expr a + b` #a b为数字,和运算符之间要有空格 #``不是单引号,为键盘上E ...

  6. Shell test命令/流程控制

    Shell test命令 Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值.字符和文件三个方面的测试. 数值测试 参数,说明 -eq等于则为真 -ne不等于则为真 -gt 大于则 ...

  7. Shell命令和流程控制[linux常用命令的使用]

    在shell脚本中使用三类命令: unix命令 概念:管道.重定向.backtick 流程控制 1 unix命令 echo "some text":在屏幕上输出信息 ls:文件列表 ...

  8. shell脚本 3 流程控制

    shell流程控制 流程控制是改变程序运行顺序的指令.linux shell有一套自己的流程控制语句,其中包括条件语句(if),循环语句(for,while),选择语句(case).下面我将通过例子介 ...

  9. 【mysql的编程专题①】流程控制与其他语法

    流程控制与内置函数,一般用在select的field字段上,或者用在函数,存储过程,触发器中; 如果用在select上就会随着query出来的row来隐式迭代; 注释与语句结束符 语句结束符 默认有两 ...

  10. Python学习(七) 流程控制if语句

    在Python中流程控制if语句采用如下格式: if expression : statement elif expression : statement elif expression : stat ...

随机推荐

  1. List集合排序的方法

    1.list集合中的对象实现Comparable接口 public class User implements Comparable<User>{ private Integer id; ...

  2. OpenSSH详解

    OpenSSH详解(思维导图) 1. SSH概述 SSH 软件架构 认证方式 2. OpenSSH 2.1 客户端程序ssh 配置文件 ssh命令 客户端免密登录 scp sftp 2.2 服务端程序 ...

  3. Linux防火墙iptables详解

    iptables详解(思维导图) 1. 概述 1.1 iptable简介 1.2 防火墙的种类 1.3 netfilter 2. iptables的工作流程 2.1 iptables工作图示 2.2 ...

  4. 伪造随机的User-Agent

    写好爬虫的原则只有一条: 就是让你的抓取行为和用户访问网站的真实行为尽量一致 1.伪造UA字符串,每次请求都使用随机生成的UA 为了减少复杂度,随机生成UA的功能通过第三方模块库fake-userag ...

  5. 如何在python列表中查找某个元素的索引

    如何在python列表中查找某个元素的索引 2019-03-15 百度上回复别人的问题,几种方式的回答: 1) print('*'*15,'想找出里面有重复数据的索引值','*'*15) listA ...

  6. Android学习笔记菜单资源文件

    创建菜单资源 menu_one.xml <?xml version="1.0" encoding="utf-8"?> <menu xmlns: ...

  7. Dubbo——服务发布原理

    引言 在使用Dubbo的时候你一定会好奇它是怎么实现RPC的,而要了解它的调用过程,必然需要先了解其服务发布/订阅的过程,本篇将详细讨论Dubbo的发布过程. 源码分析 发布服务 新学Dubbo大都会 ...

  8. cb11a_c++_顺序容器的操作4_容器大小操作_resize-max_size

    cb11a_c++_顺序容器的操作4 2 容器大小的操作 3 c.size() 容器当前的个数 4 c.max_size(),容器最大存储量 5 c.empty() 是否为空 6 c.resize(n ...

  9. Task.Result跟 Task.GetAwaiter.GetResult()相同吗?怎么选?

    前几天在用线程池执行一些任务时运到一种情形,就是回调方法中使用到了异步方法,但是回调方法貌似不支持async await的写法.这时候我应该如何处理呢?是使用Task.Result来获取返回结果,还是 ...

  10. AOF文件的写入与同步

    在 Redis 中客户端向服务器发送相关写命令请求,这时服务器中有个用于处理这些命令的事件循环进程,对这些命令进行处理,并将相关信息处理的结果反馈给客户端,如:"OK",等.同时, ...