shell脚本-循环选择语句

过程式编程语言:

顺序执行

选择执行

循环执行

注:条件中的变量,可以在执行语句中使用,不用在加上"$"。

if语句

	根据命令的退出状态来执行命令
单分支
if 判断条件;then
条件为真的分支代码
fi
双分支
if 判断条件; then
条件为真的分支代码
else
条件为假的分支代码
fi
多分支
if 判断条件 1 ; then
条件为真的分支代码
elif 判断条件 2 ; then
条件为真的分支代码
elif 判断条件 3 ; then
条件为真的分支代码
else
以上条件都为假的分支代码
fi
逐条件进行判断,第一次遇为“真”条件时,执行其分支,而后结束整个if 语句

case 语句

	case用法:
case 变量引用 in
PAT1)
分支1
;;
PAT2)
分支2
;;
...
*)
默认分支
;;
esac
case 支持glob 风格的通配符:
*: 任意长度任意字符
?: 任意单个字符
[]:指定范围内的任意单个字符
a|b: a 或b

for语句

	for  变量名 in 列表;do
循环体
done
依次将列表中的元素赋值给“变量名”; 每次赋值后即执行一次循环体; 直到列表中的元素耗尽,循环结束。
or
for ((exp1;exp2;exp3)); do
COMMANDS
done
控制变量初始化:仅在运行到循环代码段时执行一次
控制变量的修正表达式:每轮循环结束会先进行控制变量修正运算,而后再做条件判断
列表生成方式:
直接给出列表
整数列表:
(a) {start..end}
(b) $(seq [start [step]] end)==` `
返回列表的命令
$(COMMAND)
使用glob,如:*.sh
变量引用;
$@, $*

while语句

	while CONDITION; do
循环体
done
CONDITION:
循环控制条件,进入循环之前,先做一次判断,每一次循环之后会再次做判断。
条件为"true" ,则执行一次循环,直到条件测试状态为"false" 终止循环。
CONDTION 一般应该有循环控制变量,而此变量的值会在循环体不断地被修正。
进入条件:
CONDITION 为true
退出条件:
CONDITION 为false
特殊用法
遍历文件的每一行
while read line(任意); do
循环体
done < /PATH/FROM/SOMEFILE
or
命令、文件或其他(标准输出) |while read line; do
循环体
done
依次读取/PATH/FROM/SOMEFILE文件中的每一行,且将行赋值给变量line

until语句

	until CONDITION; do
循环体
done
CONDITION:
循环控制条件,进入循环之前,先做一次判断,每一次循环之后会再次做判断。
条件为"false" ,则执行一次循环,直到条件测试状态为"true" 终止循环。
CONDTION 一般应该有循环控制变量,而此变量的值会在循环体不断地被修正。
进入条件:
CONDITION 为false
退出条件:
CONDITION 为true

控制语句

	continue
用于循环体中,直接继续下个循环。
continue [N],提前结束第N层的本轮循环,而直接进入下一轮判断,最内层为第1层。
break
用于循环体中,退出整个循环。
break [N],提前结束第N层循环,最内层为第1层。
shift
用于将参量列表list左移指定次数,缺省为左移一次。
shift [n],移动N个位置,参量列表list 一旦被移动,最左端的那个参数就从列表中删除。
while 到循环遍历位置参量列表时,常用到 shift。
$1=a, $2=b, $c=d
shift
$1=b, $2=d
shift
$1=d
wait
用于等待命令执行结束,并exit 退出

select语句

	select 变量名 in LIST ; do
循环体命令
done
select 循环主要用于创建菜单,按数字顺序排列的菜单项将显示在标准错误上,并显示 PS3 提示符,等待用户输入。
用户输入菜单列表中的某个数字,执行相应的命令。
用户输入被保存在内置变量 REPLY中。
PS3="INPUT:"
select menu in bai hei hong lv;do
echo $menu
done
select与case的对比
select 是个无限循环,因此要记住用 break令退出循环,或用 exit命令终止脚本,也可以按 ctrl+c退出循环。
select 经常和 case 联合使用
与for循环类似,可以省略in LIST,此时使用位置参量。

trap信号捕捉

	trap ' 触发指令'  信号
自定义进程收到系统发出的指定信号后,将执行触发指令,而不会执行原操作。
trap ' ' 信号
忽略信号的操作
trap '-' 信号
恢复原信号的操作
trap -p
列出自定义信号操作
trap 示例
#!/bin/bash
trap 'echo “signal:SIGINT"' int
trap -p
for((i=0;i<=10;i++))
do
sleep 1
echo $i
done
trap '' int
trap -p
for((i=11;i<=20;i++))
do
sleep 1
echo $i
done
trap '-' int
trap -p
for((i=21;i<=30;i++))
do
sleep 1
echo $i
done

shell脚本-循环选择语句的更多相关文章

  1. 3.shell脚本循环试题

    shell脚本循环试题 1.计算从1到100所有整数的和 #!/bin/bash a=0 for i in {1..100} #1到100 #每次循环变量i的值也为循环次数 do a=$[ $a + ...

  2. Linux Shell脚本编程while语句

    Linux Shell脚本编程while语句案例 1,每隔3秒,打印一次系统负载 #!/bin/bash while truedo    uptime    sleep 3done 2,把监控结果保存 ...

  3. 没事就要多做多练,Shell脚本循环例题做一做

    Shell脚本循环例题                 一.示例1                 二.示例2                 三.示例3                 四.示例4 ...

  4. shell 脚本之判断语句 if 详解

    使用 Linux 系统这么长时间,对 shell 脚本也算是比较熟悉.其实不管是搞开发,还是搞运维,shell 脚本都是必备的基本技能.这次抽时间好好总结一下 shell 方面的知识,综合的再学习一下 ...

  5. Shell脚本之七 选择、循环结构

    一.if else if 语法格式 if condition then command1 command2 ... commandN fi 写成一行(适用于终端命令提示符): if [ $(ps -e ...

  6. shell脚本、if语句、for循环语句

    shell在shell脚本中,如果用户不输入东西,系统不自动退出,this is a bug!文件测试语句:-d -f -r -w -x -e逻辑测试语句:“&&”与(同时满足) “| ...

  7. shell脚本循环执行mysql语句

    参考资料:Shell脚本中执行mysql语句 需求:数据库里有张数据表存储的是用户对电影的评价(user_id movie_id rating time),但是我现在要每部电影的总评分. 解决方法: ...

  8. shell脚本循环嵌套

    嵌套循环 在循环语句内使用任意类型的命令,包括其他循环命令,叫做嵌套循环.因为是在迭代中迭代,需要注意变量的使用以及程序的效率问题. 下面举一个for循环嵌套for循环的例子: wangsx@SC-2 ...

  9. 《linux就该这么学》第五节课,shell脚本的各种语句!

    第四章shell语句 (据课本和虚拟机实验排版,借鉴请改动)               4.2:shell脚本   脚本包括:脚本声明,脚本注释,脚本内容和命令 例:#!/bin/bash      ...

随机推荐

  1. Android studio升级后原有项目无法正常编译运行问题

    Android studio工具升级后Gradle版本问题 背景 升级AndroidStudio到最新版本后,原来可正常编译输出AndroidTest的项目无法正常编译通过. 原因 升级后的Andro ...

  2. 诊断:ORA-01919: role ‘PLUSTRACE’ does not exist

    如下错误 SQL> grant plustrace to scott; grant plustrace to scott * ERROR at line 1: ORA-01919: role ' ...

  3. 数据结构---链表ADT C++实现

    最近在学习数据结构,刚开始一直在看书,但是总是感觉似懂非懂,心想还不如自己操练一波,势必有所收获.现将实现代码发表此地,以备日后复习,若有错误或者建议,欢迎告知本人! 1. 节点类 class Nod ...

  4. bootstrap-table使用笔记

    服务端分页: //html <div class="container-fluid"> <div style="margin-top:1em" ...

  5. git 连接github.com 并配置密钥

    传送门:http://www.jianshu.com/p/ff1034ed270e #备份ssh cd ~/.ssh $ ls $ mkdir key_backup //创建备份文件夹 $ cp id ...

  6. 版本优化-test

    版本优化 标签(空格分隔): 测试 需求经手人太多,直接提bug,开发不乐意,跟Leader确认不靠谱,跟PM确认,不熟悉流程,跟第三方PM确认靠谱了,结果被开发三言两语,变成了不改bug 而改需求 ...

  7. Python进阶-打包程序为exe

    操作系统:win7 x64 运行环境:Python3.5 安装PyInstaller 第一步:下载PyInstaller https://github.com/pyinstaller/pyinstal ...

  8. 在 Oculus和 Gear VR上开发跨平台的 VR应用

    本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/51433994 作者:car ...

  9. New Barns

    New Barns 时间限制: 1 Sec  内存限制: 128 MB 题目描述 Farmer John notices that his cows tend to get into argument ...

  10. noip模拟赛 dwarf tower

    [问题描述]Vasya在玩一个叫做"Dwarf Tower"的游戏,这个游戏中有n个不同的物品,它们的编号为1到n.现在Vasya想得到编号为1的物品.获得一个物品有两种方式:1. ...