select 与case 以及函数练习

select与case:

格式:

select variable in list

do

循环体命令

done

例1:

#!/bin/bash

PS3="what do you want: "

select i in a b c d         #在例2中省略的部分

do

case $i in

a)

echo aa

break                 #break是退出循环

;;

b)

echo bb

break

;;

c)

echo cc

break

;;

d)

echo dd

break

esac

done

结果:

[[email protected] bin]# ./select.sh

1) a

2) b

3) c

4) d

what do you want: 2

bb

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

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

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

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

select 经常和case 联合使用。

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

  return可以结束函数,此刻函数中的变量也被终止。



例1也可以写成例2的形式

例2

#!/bin/bash

PS3="what do you want: "

select i

do

case $i in

a)

echo aa

break

;;

b)

echo bb

break

;;

c)

echo cc

break

;;

d)

echo dd

break

esac

done

结果:

[[email protected] bin]# ./select1.sh a b c         #与例1相比,这里需要写参数

1) a

2) b

3) c

what do you want: 3

cc

练习:

1、写一个服务脚本/root/bin/testsrv.sh,完成如下要求

(1) 脚本可接受参数:start, stop, restart, status

(2) 如果参数非此四者之一,提示使用格式后报错退出

(3) 如是start:则创建/var/lock/subsys/SCRIPT_NAME, 并显示“启动成功”

考虑:如果事先已经启动过一次,该如何处理?

(4) 如是stop:则删除/var/lock/subsys/SCRIPT_NAME, 并显示“停止完成”

考虑:如果事先已然停止过了,该如何处理?

(5) 如是restart,则先stop, 再start

考虑:如果本来没有start,如何处理?

(6) 如是status, 则如果/var/lock/subsys/SCRIPT_NAME文件存在,则显示“SCRIPT_NAMEis running...”

如果/var/lock/subsys/SCRIPT_NAME文件不存在,则显示“SCRIPT_NAME is stopped...”

其中:SCRIPT_NAME为当前脚本名

#/bin/bash

read -p "which service :" name

basename=`basename $name`

dirname=`dirname $name`

start () {

if [ -f $name ] ; then

echo "$basename is running"

else

touch $name

echo "$basename starting success"

fi

}

stop () {

if [ -f $name ] ; then

rm -f $name

echo "$basename stopping"

else

echo "$basename does not work"

fi

}

restart() {

stop

start

}

status() {

if [ -f $name ] ; then

echo "$basename is running"

else

echo "$basename is stopped"

fi

}

PS3="you can choose num: "

select i in start restart stop status quit

do

case $i in

start)

start

#       break

;;

stop)

stop

#       break

;;

restart)

restart

#       break

;;

status)

status

#       break

;;

quit|q|Q)

exit

;;

esac

done

时间: 2024-10-19 17:19:41

select 与case 以及函数练习的相关文章

[EXCEL]实现类似Switch case的函数功能

[EXCEL]实现类似Switch case的函数功能 如果你就10种商品的话还好说,再多就不划算了. 假设你"商品1"的价格是"价格1", 那你就在B1里入 =vlookup(A1,{"商品1","价格1";"商品2","价格2";"商品3","价格3";..."商品10","价格10"},2,0) 注意:

tar ,cpio打包解压. shell脚本for,while,until循环. rpm包管理,select循环菜单,函数function,yum

tar  tar -cf 路径+文件名字后续.tar  +路径 创建归档压缩 tar cf /testdir/etc.tar /etc/ tar cvf 可以查看解压过程 tar tvf 预览作用 tar xvf 解压文件 tar zcvf /testdir/etc2.tar.gz /etc/ 解压再压缩到指定路径,文件格式 tar jcvf cpio 复制 从或到文件 cpio 命令是通过重定向的方式将文件进行打包备份,还原恢复的工具,它可以解压以".cpio"或者".ta

MySQL之select查询、function函数

一.select查询 //查询某张表所有数据 select * from temp; //查询指定列和条件的数据 //查询name和age这两列,age等于22的数据 select name,age from temp where age = 22; //as对列重命名 //as可以省略不写,如果重命名的列名出现特殊字符,如单引号,那就需要用双引号引在外面 select name as '名称' from temp; //给table去别名 select t.name Name from tem

SHELL编程之case与函数

一.case语句概述 使用case语句改写if多分支可以使脚本结构更加清晰.层次分明 针对变量不同取值,执行不同的命令序列 case语句结构如下: case 变量值  in 模式1) 命令序列1 ;; 模式2) 命令序列2 ;; *) 默认命令序列 esac 1 #!/bin/bash 2 read -p "请输入一个字符: " key 3 case "$key" in 4 [a-z]|[A-Z]) #假如变量$key在26个大小写英文字母中 5 echo &quo

linux之shell编程select和case用法

shell里的select用法: 语法: #i/bin/bash select 变量 in 列表 do     要执行的语句      done 举例: #!/bin/bash echo "What is your favourite OS?" select var in "windows" "Linux" "Gnu Hurd" "Free BSD" "Other"; do    ech

10、进程管理,case和函数 学习笔记

ps:显示系统当前进程状态的命令 ps a 所有与终端相关的进程 ps x 所有与终端无关的进程 ps u 以用户为中心显示进程相关信息 VSZ: 虚拟内存集,Virutal menmory Size RSS: 常驻内存集 STAT: R:运行或可运行 S:可中断睡眠 D:不可中断睡眠 T:停止 Z:僵死 s:session leader 有子进程 +:前台进程 l:多线程进程 N:低优先级进程 <: 高优先级进程 START: 启动时间 TIME: 累计占用的内存时间 COMMAND []表示

2018-7-10bash编程之case及函数

在上一章当中我们讲述了bash循环,其中我们讲述了for循环的特殊用法,以及while循环的特殊用法,而在此前我们讲述了循环的控制语句,一个是break,另一个是continue,对于continue来说,它是结束本轮循环而后进入下一轮循环,而break是提前结束其循环本身.但如果是循环嵌套的话,break只能退出当前那一层的循环,如果想退出所有的循环,就要使用break后面加上一个数字用来跳出循环的层数.而后while循环的特殊用法可以遍历文件的每一行,for以及while循环可以写成: fo

Linux下的select 与函数

Select    循环与菜单 它的主要用于创建菜单,按数字排列顺序的菜单项将呈现出列表的形式显示在标准错误输出上,并显示PS3提示符请求用户输入(默认时,PS3的值为"#?").心啊是PS3提示符后,shell等待用户输入,输入的应当是菜单列表中的一个数字,输入值会保存在一个shell的特殊变量REPLY中国,它与选项列表中相应的括号后面的字符串相关联. case命令和select命令联合使用时,用户可以从菜单中进行选择,并基于选项执行相应的命令. 1)select 格式 selec

shell编程值之函数和select的使用

select   select循环主要用于创建菜单,按数字顺序排列的菜单项将显示在标准错误上,并显示PS3提示符,等待用户的输入,用户输入菜单列表中的某个数字,执行相应的命令,用户输入被保存在变量REPLY中. select是个无限循环,因此要记住用break命令退出循环,或者用exit直接退出脚本,也可以使用ctrl+c退出循环 select语句结构: select 变量 in 选项1 选项2 ;do break done #!/bin/sh PS3="what is you favourit