shell学习二十八天----case语句

case语句

case $1 in

-f)

... 针对-f玄子昂的程序代码

;;

-d | --directory) #允许长选项

... 针对-d选项的程序代码

;;

*)

echo $1:unkonw option >$2

exit 1

#esac之前的;;形式是一个好习惯,不过并非必要

esac

 

这里我们看到,要测试的值出现在casein之间.将值以双引号括起来并非必要,但也无妨.要测试的值,根据shell模式的列别一次测试,返现匹配的时候,便执行相对应的程序代码,直至;;为止.可以使用多个模式,只要字符加以分割即可.这种情况称为”or()”.模式里会包含任何的shell统配字符,且变量,命令与算数替换会在它用作模式匹配之前在此值上被终止.

可能会觉得每个模式列表之后的部队称的右圆括号有点奇怪,不过这也是shell于艳丽部队称定界符的位移实例.

 

最后的*模式视窗通用发,但是非必须的,他作为一个默认的情况.这通常实在你要现实诊断信息并退出时使用.最后一个情况不再需要结尾的;;,不过加上他,会是比较好的形式

案例:提示输入14,与每一种模式进行匹配

bash代码:

echo 'input your a number 1 to4'

echo 'your number is : \n'

read aNum

case $aNum in

        1)echo 'number 1'

        ;;

        2)echo 'number 2'

        ;;

        3)echo 'number 3'

        ;;

        4)echo 'number 4'

        ;;

        *)echo 'number default'

        ;;

esac

 

案例二:判断输入文件是文件还是目录

option="${1}"

case ${option} in 

        -f) file="${2}"

        echo "file name is $file"

        ;;

        -d)     dir="${2}"

        echo "dir name is $dir"

        ;;

        *)echo "basename ${0} :usage:[-f file ]| [-d directory]"

        exit 1

        ;;

esac

 

案例三:

bash代码;

#!/bin/bash

name='basename $0 .sh'

case $1 in

        s|start) echo "start..."

        ;;

        stop) echo "stop ..."

        ;;

        reload)echo "reload..."

        ;;

        *)echo "Usage: $name [start|stop|reload]"

        exit 1

        ;;

esac

 

注意:1*) 相当于其他语言中的default

            2、除了*)模式,各个分支中;;是必须的,;;相当于其他语言中的break

            3、 分割多个模式,相当于or

 

复习一下变量说明:

 

变量

作用

$$

shell本身的PID(ProcessID)

$!

sehll最后运行运行的后台ProcessPID

$?

最后运行的命令的结束代码(返回值)

$-

使用set命令设定的Flag一览

$*

所有参数列表.”$*”用圆括号括起来,”$1 $2 ...$n”的行为输出所有参数

$@

所有参数列表,如果”$@”用圆括号括起来,”$1” “$2” “$n”的形式输出所有参数

$#

添加到shell的参数个数

$0

shell本身的文件名

$1~$n

添加到sehll的各参数值.$1是第一个参数,$2是第二个参数,以此类推

案例:

printf "The complete list is %s\n" "$$"

结果:The complete list is 1567

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值