• shell脚本-循环选择语句


    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
    
  • 相关阅读:
    阿里巴巴
    实用得 JS 代码
    C#获得当前插入数据的ID
    “职场五魅”助你成功
    SQL2005导入导出数据库方法集合
    VS05里checkboxlist用JS获取 value值
    sql 去除html标签函数
    百度新闻搜索结果页的采集
    把表中的某个字段格式如:2,3,4的数据分别插入到另一个表中
    jquery 定位元素并获取数据
  • 原文地址:https://www.cnblogs.com/shenxm/p/8424833.html
Copyright © 2020-2023  润新知