1. if判断

1.1 if...

```#shell
#!/bin/sh
a=5
if [[ $a > 3 ]];then
echo "$a>3" # 5>3
fi
#写成一行
if [[ $a 1.2 if...else

```#shell
#!/bin/sh
a=5
if [[ $a > 8 ]];then
echo "$a>8"
else
echo "$a1.3 if...elif...else

```#shell
#!/bin/sh
a=5
if [[ $a > 5 ]];then
echo "$a>5"
elif [ $a -gt 5 ];then
echo "$a5"
else
echo "$a=5" #5=5
fi
```

1.4 使用&& ||来实现判断语句

&& 当条件为true时执行后面的语句
|| 当条件为false时执行后面的语句
```#shell
[ 5 -gt 4 ]&&echo "5>4" #5>4
[ 5 -ge 6 ]&& echo "5>=6"||echo "5[ 5 -lt 6 ]&& echo "hello";[ 5 -lt 3 ]||echo "5>=6"
```#shell
[ 5 -lt 6 ]&& echo "hello";[ 5 -lt 3 ]||echo "5>=6" #hello 5>=6
```

2. for循环

```#shell
#!/bin/sh
for i in `seq 1 5`;do
echo $i # 1 2 3 4 5
done
```

3. while语句

```#shell
a=1
while [ $a -lt 5 ];do
echo "$a" # 1 2 3 4
let "a++"
#或者 a=`expr $a + 1`
done
```

4. 无限循环

4.1 while中用:代替条件

```#shell
#!/bin/sh
while : ;do
echo "hello"
done
```

4.2 while 条件一直为true

```#shell
#!/bin/sh
while true;do
echo "hello"
done
```
4.3 使用for循环

```#shell
#!/bin/sh
for ((;;));do
echo "hello"
done
```

5. until 循环

```#shell
#!/bin/sh
a=0
until [ $a -gt 10 ]; do
echo $a # 0 1 2 3 4 5 6 7 8 9 10
let "a++"
done
```

6. case

case为多选语句,每个case语句匹配一个值与一个模式.

case用easc结束,每个case分枝用 ;;来break

```#shell
#!/bin/sh
read -p "请输入的你的名次:" num
case $num in
1) echo "武林盟主"
;;
2) echo "五岳盟主"
;;
3) echo "华山掌门"
;;
*) echo "回家玩去"
esac
```

7. 跳出循环

7.1 break跳出所有循环

```#shell
while :;do
read -p "请输入1到5之间的数字:" num
case $num in
1|2|3|4|5) echo "你输入的数字为$num"
;;
*) echo "你输入的数字不在1和5之间"
break
;;
esac
done
```
输入6后停止循环
```#log
请输入1到5之间的数字:5
你输入的数字为5
请输入1到5之间的数字:4
你输入的数字为4
请输入1到5之间的数字:6
你输入的数字不在1和5之间*
```

7.2 continue跳出本次循环

```#shell
while :;do
read -p "请输入1到5之间的数字:" num
case $num in
1|2|3|4|5) echo "你输入的数字为$num"
;;
*) echo "你输入的数字不在1和5之间"
continue
echo "游戏结束"
;;
esac
done
```
输入7后继续下次循环
```#log
请输入1到5之间的数字:7
你输入的数字不在1和5之间
请输入1到5之间的数字:3
你输入的数字为3
请输入1到5之间的数字:6
你输入的数字不在1和5之间
```

7.3 return函数返回

```shell
func(){
result=`adb shell ps|grep com.android.browser|wc -l`
echo $result #
if((${result} > 0));then
return 0
else
return 1
fi
}
func
a=$?
if [ 1 -gt 0 ];then
echo "浏览器在运行" #浏览器在运行
else
echo "浏览器没有在运行"
fi
```

7.4 exit脚本退出

```#shell
#!/bin/sh
i=1
while [ "$i" -lt 10 ];do
echo $i #1 2 3 4 5 不会继续执行
if [ $i -eq 5 ];then
exit
fi
((i+=1))
done
```
[return和exit的区别](https://www.jb51.net/article/159107.htm):
* 作用不同。exit用于在程序运行的过程中随时结束程序,exit的参数是返回给OS的。exit是结束一个进程,它将删除进程使用的内存空间,同时把错误信息返回父进程。而return是返回函数值并退出函数;
* 语义层级不同。return是语言级别的,它表示了调用堆栈的返回;而exit是系统调用级别的,它表示了一个进程的结束;
* 使用方法不用。return一般用在函数方法体内,exit可以出现在Shell脚本中的任意位置。

shell 10流程控制的更多相关文章

  1. PHP 10 : 流程控制

    原文:PHP 10 : 流程控制 感觉PHP和其他语言相似.说说PHP提供的流程控制关键字吧. 条件 ifelseelseifswitch 循环 whiledo{} while()breakconti ...

  2. 10、shell编程+流程控制+分支嵌套

    SHELL 编程     shell 是一个命令解释器,侦听用户指令.启动这些指令.将结果返回给用户(交互式的shell)     shell 也是一种简单的程序设计语言.利用它可以编写一些系统脚本. ...

  3. Shell工具| 流程控制

    1. 流程控制 if 判断 ()[ 条件判断式 ],中括号和条件判断式之间必须有空格 ()if后要有空格 [kris@hadoop datas]$ vim if.sh #!/bin/bash -eq ...

  4. shell编程流程控制

    前言: 在linux shell中,通常我们将一些命令写在一个文件中就算是一个shell脚本了,但是如果需要执行更为复杂的逻辑判断,我们就需要使用流程控制语句来支持了. 所谓流程控制既是通过使用流程控 ...

  5. linux shell 之流程控制 if if else while

    (1)流程控制不可以为空: (2)if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi 条件 ...

  6. shell编程--流程控制for,do-while,if-then,break,continue,case等

    2.5 流程控制 2.5.1 if语法 1.语法格式 if condition then     statements [elif condition     then statements. ..] ...

  7. shell脚本(10)-流程控制while

    一.while循环介绍 while循环与for一样,一般不知道循环次数使用for,不知道循环的次数时推荐使用while 二.while语法 while [ condition ] #条件为真才会循环, ...

  8. shell之流程控制

    一.if语句.while.for循环各种小例题 1.用户验证 [root@bogon ~]# cat buer.sh #!/bin/bash #user='buer' #password='1234. ...

  9. Linux学习 -- Shell编程 -- 流程控制

    if语句 单分支 if [ 条件判断式 ]; then 程序 fi 或者 if [ 条件判断式 ] then 程序 fi 例子: 双分支 if [ 条件判断式 ] then 程序 else 程序 fi ...

随机推荐

  1. Java通过继承外部类来建立该外部类的protected内部类的实例(转)

    原文链接:http://blog.sina.com.cn/s/blog_7de00ff60102xffx.html 如果想要在外部类的导出类(子类)中建立该外部类的为protected权限的内部类的实 ...

  2. JAVA中int转string及String.valueOf()的使用

    日常java开放中,经常会遇到int和String的互转,一般图省事的做法就是: String length = ""+100; length的生成需要使用两个临时字符串" ...

  3. C#实现Access导入导出Excel

    一.Access从Excel中导入数据 .用到的Excel表的格式及内容 实现 [c-sharp] view plaincopyprint? OleDbConnection con = new Ole ...

  4. [Linux] diff命令:逐行进行文件比较

    1. 比较文件 $ diff file1 file2 2. 比较文件夹 $ diff -urNa dir1 dir2 -u, -U NUM, --unified[=NUM] output NUM (d ...

  5. Java面试通关要点汇总整理【终极版】

    简历篇 请自我介绍 请介绍项目 基础篇 基本功 面向对象的特征 final, finally, finalize 的区别 int 和 Integer 有什么区别 重载和重写的区别 抽象类和接口有什么区 ...

  6. Linux删除Screen

    screen screen命令是用来解决远程运行服务器中程序时无法退出的尴尬问题. 介绍 有详细的一篇文章 linux screen 命令详解 问题 文章较老,难免有问题. 比如某用户评论: Ctrl ...

  7. hdu1243 dp (类最长公共子序列)

    题意:射击演习中,已知敌人出现的种类顺序,以及自己的子弹种类顺序,当同种类的子弹打到同种类的敌人时会得到相应分数,问最多能得多少分. 这题的题意很好理解,而且模型也很常见,是带权值的类最长公共子序列问 ...

  8. Linux的getrlimit与setrlimit系统调用

    转自:http://www.cnblogs.com/niocai/archive/2012/04/01/2428128.html 功能描述:获取或设定资源使用限制.每种资源都有相关的软硬限制,软限制是 ...

  9. 不用webservice wcf提供服务,用Rest更轻量

    从2005年开始就开始有基于服务的开发方式,到08年时候 微软和sun等公司都已经提供了很多基于服务的开发框架 . 微软 .net 平台的基于服务的框架主要有:.NET Remoting.webser ...

  10. silverlight 进行本地串口调用的一种可行的解决方法

    silverlight 是一个很不错的开发平台,我们可以设计出很绚丽的界面,用户可以拥有很好的体验,但是就目前来说,进行本地串口的直接调用时不行的,因为安全的原因,有没有相对简单的调用方式呢? 答案是 ...