Linux基础命令-SHELL脚本编程进阶

SHELL脚本编程进阶

一、循环

1. 循环概念

1.编程中的逻辑处理:
	顺序执行
	选择执行
	循环执行
2.循环执行
	将某代码段重复运行多次
	重复运行多少次
		循环次数事先已知
		循环次数事先未知
	有进入条件和退出条件
3.for, while, until

2. for循环

1.	for 变量名 in 列表;do
		循环体
	done
		
2.执行机制:
依次将列表中的元素赋值给“变量名”; 每次赋值后即执行一次循环体; 直
到列表中的元素耗尽,循环结束

3.列表生成方式:
	(1) 直接给出列表
	(2) 整数列表:
		(a) {
   start..end}
		(b) $(seq [start [step]] end)
	(3) 返回列表的命令 $(COMMAND)
	(4) 使用glob,如:*.sh
	(5) 变量引用 $@, $*

4.双小括号方法,即(())格式,也可以用于算术运算

5.双小括号方法也可以使bash Shell实现C语言风格的变量操作
	I=10
	((I++))
	
6.for循环的特殊格式:
 for ((控制变量初始化;条件判断表达式;控制变量的修正表达式))do
	循环体
 done
 
7.控制变量初始化:仅在运行到循环代码段时执行一次

8.控制变量的修正表达式:每轮循环结束会先进行控制变量修正运算,而后再做
条件判断

3. while循环

1.while CONDITION; do
	循环体
 done
 
2.CONDITION:循环控制条件;进入循环之前,先做一次判断;每一次循环之后
会再次做判断;条件为“true”,则执行一次循环;直到条件测试状态为“false”
终止循环

3.因此:CONDTION一般应该有循环控制变量;而此变量的值会在循环体不断地被修正

4.进入条件:CONDITIONtrue

5.退出条件:CONDITIONfalse

6.创建无限循环体
	while true; do
		循环体
	done

7.while循环的特殊用法(遍历文件的每一行)
	while read line; do
		循环体
	done < /PATH/FROM/SOMEFILE
依次读取/PATH/FROM/SOMEFILE文件中的每一行,且将行赋值给变量line

4. until循环

1.until CONDITION; do
	循环体
  done
  
2.进入条件: CONDITIONfalse

3.退出条件: CONDITIONtrue

4.创建无限循环体
	until false; do
		循环体
	Done

5. 循环控制语句continue

1.用于循环体中
2.continue [N]:提前结束第N层的本轮循环,而直接进入下一轮判断;最内层为
	第1while CONDTIITON1; do
		CMD1
		...
	if CONDITION2; then
		continue
	fi
		CMDn
		...
	done

6. 循环控制语句break

1.用于循环体中
2.break [N]:提前结束第N层循环,最内层为第1while CONDTIITON1; do
		CMD1
		...
	if CONDITION2; then
		break
	fi
		CMDn
		...
	done

7. 循环控制shift命令

1.shift [n]

2.用于将参量列表 list 左移指定次数,缺省为左移一次。

3.参量列表 list 一旦被移动,最左端的那个参数就从列表中删除。while 循环遍
历位置参量列表时,常用到 shift

4.	./doit.sh a b c d e f g h
#!/bin/bash
	while [ $# -gt 0 ] # or (( $# > 0 ));do
		echo $*
		shift
	done

5.	./shfit.sh a b c d e f g h
#!/bin/bash
	until [ -z "$1" ];do
		echo "$1"
		shift
	done
	echo

8. select循环与菜单

1.select variable in list
	do
		循环体命令
	done
2.select 循环主要用于创建菜单,按数字顺序排列的菜单项将显示在标准错误上,
并显示 PS3 提示符,等待用户输入

3.用户输入菜单列表中的某个数字,执行相应的命令

4.用户输入被保存在内置变量 REPLY5.select 是个无限循环,因此要记住用 break 命令退出循环,或用 exit 命令终止
脚本。也可以按 ctrl+c 退出循环

6.select 经常和 case 联合使用

7.for 循环类似,可以省略 in list,此时使用位置参量

二、信号捕捉

1. 信号捕捉trap

1.trap '触发指令' 信号
	进程收到系统发出的指定信号后,将执行自定义指令,而不会执行原操作
2.trap '' 信号
	忽略信号的操作
3.trap '-' 信号
	恢复原信号的操作
4.trap -p
	列出自定义信号操作
5.trap finish EXIT
	当脚本退出时,执行finish函数
6.示例:
	#!/bin/bash
	trap 'echo “signal:SIGINT"' int
	trap -p
	for((i=0
  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值