浅谈case语句与select语句

case语句与select语句

case语句:

多分支if语句:

if CONDITION1;then

分支1

elif CONDITION2;then

分支2

...

else CONDITION;then

分支n

fi

例如下面这段代码,我们可以使用while语句内嵌套if语句实现,

#!/bin/bash

cat << EOF

cpu) display cpu information

mem) display memory information

disk) display disks information

quit) quit

==================================

EOF

read -p "Entwer your option: " option

while [ "$option" != "cpu" -a "$option" != "mem" -a "$option" != "disk" -a "$option" != "quit" ]; do

echo "cpu,mem,disk,quit"

read -p "Entwer your option: " option

done

if [ "$option" == "cpu" ];then

lscpu

elif [ "$option" == "mem" ];then

free -m

elif [ "$option" == "disk" ];then

fdisk -l /dev/[hs]d[a-z]

else

echo "quit"

exit 0

fi

不难看出,语句有些陈杂,下面我们看一下case语句的语法格式,

case语句的语法格式:

case $VARAIBLE in

PAT1)

分支1

;;

PAT2)

分支2

;;

...

*)

分支n

;;

esac

利用case我们将上面的代码修改一下,结果如下:

#!/bin/bash

cat << EOF

cpu) display cpu information

mem) display memory information

disk) display disks information

quit) quit

==================================

EOF

read -p "Entwer your option: " option

while [ "$option" != "cpu" -a "$option" != "mem" -a "$option" != "disk" -a "$option" != "quit" ]; do

echo "cpu,mem,disk,quit"

read -p "Entwer your option: " option

done

case $option in

cpu)

lscpu ;;

men)

free -m ;;

disk)

fdisk -l /dev/[hs]d[a-z] ;;

*)

echo "quit"

exit 0 ;;

esac

是不是比if语句更直观,更有条理性

最后我们在说一下与case类似的select语句

select 循环与菜单

select variable in list

do

循环体命令

done

select循环主要用于创建菜单,按数字顺序排列的菜单项将显示在标准错误上,并显示PS3提示符,等待用户输入

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

用户输入被保存在内置变量REPLY中

select是个无限循环,因此要记住用break命令退出循环,或用exit命令终止脚本。也可以按ctrl+c退出循环

select 经常和case联合使用

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

时间: 2024-10-14 04:35:14

浅谈case语句与select语句的相关文章

shell编程之if语法、case语法、while语句、until语句、for语句、select语句

主要介绍shell基本语句的语法 if语句语法1 单分支结构 (如果,那么)if <条件测试> ;then 指令;fi 或者如下:if <条件测试>? then?  指令fi 2 双分支结构(如果,那么,否则...) if <条件表达式>? then ? 指令else ? 指令fi 多分支结构(如果,那么,否则如果,那么,否则...) if <条件表达式>? then ? 指令elif <条件表达式>? then?  指令else ? 指令fi其

join和on语句中select语句选择公共列的区别

对多个表进行join时,在select语句中,如果使用using语句,则using语句中选中的列,在select语句中不能指定限定词,否则会报ORA-25154 查看emp表 SQL> select * from emp; EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO ----- ---------- --------- ----- ----------- --------- --------- -

容易被忽略的事----sql语句中select语句的执行顺序

关于Sql中Select语句的执行顺序,一直很少注意这个问题,对于关键字的使用也很随意,至于效率问题,因为表中的数据量都不是很大,所以也不是很在意. 今天在一次面试的时候自己见到了,感觉没一点的印象,所以也就没有答上来,现在整理一下吧,希望提醒自己,也能够帮到其他的朋友.如下: (8) SELECT (9)DISTINCT (11) <TOP_specification> <select_list> (1) FROM <left_table> (3) <join_

SQL语句中SELECT语句的执行顺序

SELECT语句的执行的逻辑查询处理步骤: 执行顺序 语句 8 SELECT 9 DISTINCT 11 <TOP_specification> <select_list> 1 FROM <left_table> 3 <join_type> JOIN <right_table> 2 ON <join_condition> 4 WHERE <where_condition> 5 GROUP BY<group_by_li

MYSQL语句中SELECT语句及其子句的执行顺序

SELECT语句的执行的逻辑查询处理步骤:(8)SELECT (9)DISTINCT(11)<TOP_specification> <select_list>(1)FROM <left_table>(3) <join_type> JOIN <right_table>(2) ON <join_condition>(4)WHERE <where_condition>(5)GROUP BY <group_by_list&g

浅谈MySQL中优化sql语句查询常用的30种方法

1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 3.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: select id from

浅谈“Mysql”的基础操作语句

/*-------------------------------------------读者可以补充内容到下面--------------------------------------------------*/ //修改表名alter table qq_user rename user;//修改字段数据类型alter table user modify qq_id int;//修改字段名alter table user change qq_id Id int;//修改字段名和字段数据类型a

浅谈 MySQL 中优化 SQL 语句查询常用的 30 种方法

1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 3.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: select id from

浅谈 C# 语言的 using 语句

背景知识 外部排序指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存,需要在内存和外部存储器之间进行多次数据交换,以达到排序整个文件的目的.外部排序最常用的算法是多路归并排序,即将原文件分解成多个能够一次性装入内存的部分,分别把每一部分调入内存完成排序.然后,对已经排序的子文件进行归并排序. 问题提出 假设我们要写一个外部排序程序.现在要讨论的是对已经排序的子文件进行归并排序. 解决方案1 下面是外部排序归并阶段的代码片段: 01: class ExternalSo