case 条件判断

case语句的语法格式:

case expression in

pattern1)

suite1

;;

pattern2)

suite2

;;

...

patternn)

suiten

;;

*)

other_suite

;;

esac

一、编写一个测试脚本,名字为myservice.sh

根据输入的选项,创建相应的文件

#/bin/bash
#
myService=`basename $0`
lockFile="/var/lock/subsys/$myService"

[ $# -lt 1 ] && echo "Usage: $myService {start|stop|restart|status}" && exit 4

case $1  in
‘start‘)
        touch $lockFile
        echo "Starting $myService OK"
        ;;
‘stop‘)
        rm -f $lockFile
        echo "Stopping $myService OK"
        ;;
‘restart‘)
        rm -f $lockFile
        touch $lockFile
        echo "Restarting $myService OK"
        ;;
‘status‘)
        if  [ -f $lockFile ];then
                  echo "$myService is runing"
        else
                  echo "$myService is stopped"
        fi
        ;;
*)   
        echo "Usage: $myService {start|stop|restart|status}"
        exit 3

esac

执行脚本:

[[email protected] src]# ./myservice.sh

Usage: myservice.sh{start|stop|restart|status}

[[email protected] src]# ./myservice.sh status

myservice.sh is stopped

[[email protected] src]# ./myservice.sh start

Starting myservice.sh OK

[[email protected] src]# ./myservice.sh status

myservice.sh is runing

[[email protected] src]# ./myservice.sh stop

Stopping myservice.sh OK

[[email protected] src]# ./myservice.sh restart

Restartingmyservice.sh OK

二、练习:写一个脚本

1、提示用户输入一个任意字符

2、能判断此字符是数字、字母或特殊字符

vim user.sh

#!/bin/bash

#

while true;do

read -p " Enter a char: " char

[[ "$char" == ‘quit‘ ]]&& break

case $char in

[a-z])

echo "word"

;;

[0-9])

echo "digital"

;;

*)

echo "special"

;;

esac

done

脚本执行结果:

[[email protected] src]# ./user.sh

Enter a char: 9

digital

Enter a char: a

word

Enter a char: >

special

Enter a char: quit

[[email protected] src]#

三、练习:写一个脚本,能对/etc/目录进行打包备份,备份位置为/backup/etc-日期.后缀

1、显示如下菜单给用户:

xz) xz compress

gzip) gzip compress

bip2) bzip2 compress

2、根据用户指定的压缩工具使用tar打包压缩

3、默认为xz:输入错误则需要用户重新输入

[[email protected] src]# cat backup.sh

#/bin/bash

#

[ -d /backup ] || mkdir /backup

cat << EOF

Please choose a compress tool:

xz) xz compress

gzip) gzip compress

bzip2) bzip2 compress

EOF

while true; do

read -p "Your option: " option

option=${option:-xz}

case $option in

xz)

compressTool=‘J‘

suffix=‘xz‘

break ;;

gzip)

compressTool=‘z‘

suffix=‘gz‘

break ;;

bzip2)

compressTool=‘j‘

suffix=‘bzip2‘

break ;;

*)

echo "wrong option."

;;

esac

done

tar ${compressTool}cf /backup/etc-`date+%F-%H-%M-%S`.tar.$suffix /etc/*

脚本执行结果:

[[email protected] src]# ./backup.sh

Please choose a compress tool:

xz) xz compress

gzip) gzip compress

bzip2) bzip2 compress

Your option: xz

tar: 从成员名中删除开头的“/”

[[email protected] src]# cd /backup/

[[email protected] backup]# ls

etc-2016-08-13-22-46-26.tar.xz

可以看到已经按照要求生成相应的备份文件。

四、练习:写一个脚本,完成如下功能

说明:此脚本能够为指定网卡创建别名、指定地址;使用格式:mkethalias -v| --verbose -i ethx

1、-i选项用于指定网卡

2、如果网卡存在:在命令行,请用户指定一个别名

3、让用户指定IP和掩码

4、用户可以同时使用-V或--verbose选项:如果使用了,显示配置结果:否则,则不予显示

vim  scriptargs.sh

#/bin/bash

#

debug=0

while [ $# -ge 1 ];do

case $1 in

-i|--interface)

ethcard="$2"

shift 2

;;

-v|--verbose)

debug=1

shift

;;

*)

echo "Wrong options arguments."

echo "Usage: `basename $0` [-v|--verbose] -i|--interfaceInterface"

shift $#

;;

esac

done

#echo "Interface: $ethcard, VerboseFlag: $debug "

! ifconfig $ethcard &> /dev/null&& echo "No this interface ..." && exit 3

read -p "Enter an alias: "ethAlias

read -p "Enter IP: " ipAddr

read -p "Mask: " netMask

ifconfig $ethAlias $ipAddr netmask $netMask

[ $debug -eq 1 ] && ifconfig$ethAlias

执行结果:

[[email protected] src]# vim scriptargs.sh -i eth0

[[email protected] src]# ./scriptargs.sh -i eth0

Enter an alias: eth0:2

Enter IP: 192.168.1.5

Mask: 255.255.255.0

[[email protected] src]# ifconfig

eth0     Link encap:Ethernet  HWaddr00:0C:29:D9:A2:5D

inet addr:192.168.10.102 Bcast:192.168.10.255 Mask:255.255.255.0

inet6 addr: fe80::20c:29ff:fed9:a25d/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500  Metric:1

RX packets:16489 errors:0 dropped:0 overruns:0 frame:0

TX packets:8692 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:1345332 (1.2 MiB)  TXbytes:945356 (923.1 KiB)

eth0:2   Link encap:Ethernet  HWaddr00:0C:29:D9:A2:5D

inet addr:192.168.1.5 Bcast:192.168.1.255 Mask:255.255.255.0

UP BROADCAST RUNNING MULTICAST MTU:1500  Metric:1

lo       Link encap:Local Loopback

inet addr:127.0.0.1 Mask:255.0.0.0

inet6 addr: ::1/128 Scope:Host

UP LOOPBACK RUNNING MTU:65536  Metric:1

RX packets:0 errors:0 dropped:0 overruns:0 frame:0

TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:0 (0.0 b)  TX bytes:0(0.0 b)

时间: 2024-10-24 00:20:33

case 条件判断的相关文章

Shell入门教程:流程控制(4)case 条件判断

case的语法结构: case 待测项 in 样式串1] 命令区域1 ;; (样式串2) 命令区域2 ;; 样式串3) 命令区域3 ;; *) 命令区域 ;; esac 命令区域,可以是单一指令或多行指令,但最后一个指令要以 ;; 结束. 样式串行可用字符串和通配符组成,默认会区别大小写. 如果样式串行有好几个字符串要对比,要使用 | 隔开.字符 | 有 “或”的意思,意即:只要符合其中之一,就算比较成功. 样式串行可写成‘(样式串行)’,或省略左边的括号,写成 '样式串行)'.一般,以后面这个

Shell中条件判断语法与判断条件

一,简介 Shell各种判断结构和运算符的用法是shell编程的基础,了解shell的判断.运算符和一些退出状态 对后面的学习有很重要的影响.shell有一个内部命令test经常用于对判断语句 进行测试一种或几种状态的条件是否成立 二. 判断条件 (1)Linux的shell中的测试命令,用于测试某种条件或某几种条件是否真实存在 测试命令是判断语句和循环语句中条件测试的工具,对判断和运算符的比较测试有很大的帮助. (2)测试条件为真,返回一个0值:      为假,返回一个非0整数值 测试命令有

条件判断之if、case语句和文件查找命令

一.脚本编程 1.if语句怎样用 人生面临许多选择,在编程世界里同样也有许多选择.同其他编程语言一样,当我们想写一个功能健壮的脚本时,通过条件判断来选择适合的操作尤为重要.在我们执行某些重要的操作之前,判断当前环境是否适合执行这一操作是非常重要的.我们可以用&&和||来做简单的判断,不过shell有更用的语句.shell有两种常见的条件选择语句if和case.我们先来看一下if该怎样用吧. if语句的单分支语法: if 条件判断 ;then;执行命令:fi [[email protecte

shell编程 条件判断式----利用 case ..... esac 判断

条件判断式----利用 case ..... esac 判断 case  $变量名称 in   <==关键词为 case ,还有变量前有钱字号 "第一个变量内容")   <==每个变量内容建议用双引号括起来,关键词则为小括号 ) 程序段 ;;            <==每个类别结尾使用两个连续的分号来处理! "第二个变量内容") 程序段 ;; *)                  <==最后一个变量内容都会用 * 来代表所有其它值 不包含

[Shell]条件判断与流程控制:if, case, for, while, until

-------------------------------------------------------------------------------------------------------- [条件判断] 1. 按文件类型进行判断 -b 文件    判断该文件是否存在,并且为块设备文件(是块设备文件为真) -c 文件    判断该文件是否存在,并且为字符设备文件(是字符设备文件为真) -d 文件    判断该文件是否存在,并且为目录文件(是目录为真) -e 文件    判断该文

求 1+2+...+n, 要求不能使用乘除法、for、while、if、else、switch、case 等关键字以及条件判断语句 (A?B:C)。

求 1+2+...+n,要求不能使用乘除法.for.while.if.else.switch.case 等关键字以及条件判断语句 (A?B:C). #include <bits/stdc++.h> using namespace std; int Sum(int n) { int Ret = 0; n == 0 || (Ret = Sum(n-1)); return n + Ret; } class A{ public: A() { sum += ++n; } static int sum;

题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)

题目:求1+2+…+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字以及条件判断语句(A?B:C). 分析:这道题没有多少实际意义,因为在软件开发中不会有这么变态的限制.但这道题却能有效地考查发散思维能力,而发散思维能力能反映出对编程相关技术理解的深刻程度. 通常求1+2+…+n除了用公式n(n+1)/2之外,无外乎循环和递归两种思路.由于已经明确限制for和while的使用,循环已经不能再用了.同样,递归函数也需要用if语句或者条件判断语句来判断是继续

求1+2+3+...+n的值,要求不能使用乘除法,for、while、if、else、switch、case、等关键字及条件判断语句(JAVA)

采用递归和三目表达式注意红色字体一定不能写成n-- 1 package com.hunag; 2 3 public class Sum { 4 5 static int sum; 6 public static int isum(int n) 7 { 8 sum+=n; 9 sum=n==0?sum:isum(--n); 10 System.out.println(n); 11 return sum; 12 } 13 public static void main(String[] args)

Linux 条件判断 - if语句 - case语句 - for语句

01.按照文件类型进行判断   => 常用-d.-e.-f 两种格式: test -e /root/install.log  =>   常用 [ -e /root/install.log ]  =>   两边空格必须有 例如:[ -d /root ] && echo "yes" || echo "no":判断该文件是否存在,并且是否为目录文件,是yes,不是no. 02.按照文件权限进行判断   => 03.两个文件之间比较