case语句及脚本选项进阶

面向过程

控制结构

顺序结构

选择结构

循环结构

选择结构:

if:单分支、双分支、多分支

cese语句:选择结构

case SWITCH in

value1)

statemnet

...

;;

value2)

statement

...

;;

*)

statement

...

;;

esac

[0-9] [a-z] [A-Z] [abc]

#!/bin/bash

#

case $1 in

[0-9])

echo "a digit";;

[a-z])

echo "Lower";;

[A-Z])

echo "upper";;

*)

echo "special character.";;

esac

只接受参数start,stop,restart,status其中之一

#!/bin/bash

#

case $1 in

‘start‘)

echo "start server ...";;

‘stop‘)

echo "stop server ...";;

‘restart‘)

echo "restart server ...";;

‘status‘)

echo "running ...";;

*)

echo "`basename $0` {start|stop|restart|status}";;

esac

写一个脚本,可以接受选项及参数,而后能获取每一个选项,及选项的参数,并能根据选项及参数做出特定的操作,比如

demo.sh --add tom,jerry --del tom,blair -v|--verbose -h|--help

#!/bin/bash

#

DEBUG=0

ADD=0

DEL=0

for I in `seq 1 $#`;do

if [ $# -gt 0 ];then

case $1 in

-v|--verbose)

DEBUG=1

shift #踢掉刚才引用的变量

;;

-h|--help)

echo "Usage: `basename $0` --add USER_LIST --del USER_LIST -v|--verbose -h|--help"

exit 0

;;

--add)

ADD=1

ADDUSERS=$2

shift 2

;;

--del)

DEL=1

DELUSERS=$2

shift 2

;;

*)

echo "Usage: `basename $0` --add USER_LIST --del USER_LIST -v|--verbose -h|--help"

exit 7

;;

esac

fi

done

if [ $ADD -eq 1 ];then

for USERS in `echo $ADDUSERS | sed ‘[email protected],@ @g‘`; do

if id $USER &> /dev/null; then

[ $DEBUG -eq 1 ] && echo "$USER exists."

else

useradd $USER

[ $DEBUG -eq 1 ] && echo "add user $USER finished"

fi

done

fi

if [ $DEL -eq 1 ];then

for USER in `echo $DELUSERS | sed ‘[email protected],@ @g‘`; do

if id $USER &> /dev/null; then

userdel -r $USER

[ $DEBUG -eq 1 ] && echo "delete $USER finished."

else

[ $DEBUG -eq 1 ] && echo " $USER not exists"

fi

done

fi

练习:写一个脚本

demo.sh -v -c -h|--help

其中,-h选项只能单独只用,用于显示帮助信息;-c选项时,显示当前系统上登陆的所有用户数;如果同时使用了-v选项,则既显示同时登陆的用户数,又显示登陆的用户的相关信息,如

Logged users: 4.

They are:

root tty2 Feb      18  02:41

root pts/1 Mar     8   08:36 (172.19.49.88)

root pts/5 Mar   8   08:36 (172.19.49.88)

hadoop pts/6 Mar   8   08:36 (172.19.49.88)

#!/bin/bash

#

declare -i SHOWNUM=0

declare -i SHOWUSERS=0

for I in `seq 1 $#`;do

if [ $# -gt 0 ]; then

case $1 in

-h|--help)

echo "Usage: `basename $0` -h|--help -c |--counts -v|--verbose"

exit 0

;;

-v|--verbose)

let SHOWUSERS=1

shift;;

-c|--count)

let SHOWNUM=1

shift;;

*)

echo "Usage: `basename $0` -h|--help -c |--counts -v|--verbose"

exit 8;;

esac

fi

done

if [ $SHOWNUM -eq 1 ]; then

echo "Logged users: `who | wc -l`."

if [ $SHOWUSERS -eq 1 ]; then

echo "They are:"

who

fi

fi

case语句及脚本选项进阶,布布扣,bubuko.com

时间: 2024-10-17 12:54:28

case语句及脚本选项进阶的相关文章

bash脚本编程之case语句及脚本选项进阶

case语句及脚本选项进阶详解     面向过程程序设计语言中的控制流(即程序当中的语句)默认是顺序执行的. 程序设计语言的控制结构一共有三类: 1,顺序结构 2,选择结构 (1)if语句 ->单分支的if语句 格式:if condition1;then expression ... fi ->双分支的if语句 格式:if condition1;then expression ... else expression ... fi ->多分支的if语句 格式:if condition1;t

第八课-第二讲 08_02_bash脚本编程之七 case语句及脚本选项进阶

一. 面向过程控制结构顺序结构选择结构循环结构选择结构if语句 单分支,双分支,多分支case 语句 case语句:选择结构 case SWITCH invalue1)---此处的value是当做字符来比较的statement.....;;value2)statement.....;;value3)statement.....;;*)statement.....;;esac 原文地址:http://blog.51cto.com/13788421/2147914

linux基础16-bash编程(case语句及脚本选项 )

(1) case语句:选择结构 case SWITCH in value1) statement ... ;; //双分号结尾. value2) statement ... ;; *) statement ... ;; esac //esac结尾. (2) shift参数说明: 执行shift命令后,位置变量($1-$9)中的命令行参数会依次向左传递. 例: #!/bin/bash # DEBUG=0 ADD=0 DEL=0 for I in `seq 0 $#`; do //解释:seqs 1

在Bash shell脚本编程中,如何正确无误获取到“脚本选项参数”和“脚本参数”呢?

Linnux 中有些命令的功能非常强大,主要是因为它支持的命令选项比较多.如:[ip]命令可以配置IP地址.路由条目的配置管理操作非常完善,该命令就可以完成[ifconfig]和[route]命令实现的所有功能.函数是单独的功能模块,如果函数能够接收选项参数,那么该函数的功能就变得丰富,且灵活.脚本也是一样. 那么linux中命令的格式又是怎么样的呢? [[email protected] ~]# command   [optons parameter1 | parameter2]...  pa

Linux基础之bash脚本编程进阶篇-选择执行语句(if,case)

bash脚本的书写规范简介 看本文需要了解的脚本撰写习惯:bash 开头顶格写#!紧接着写解释器路径/bin/bash 由于bash属于脚本语言,脚本语言的运行方式 解释运行:源代码 --> 运行时启动解释器,由解释器边解释边运行 Linux中的脚本解释器有:zsh,csh,bash,tsh众多shell,不过bash最常用. 第一行写完之后,就可以直接写代码.不过为了便于他人阅读通常会增加如下行: 第二行:#版本信息 第三行:#作者与联系方式 第四行:#版权宣告方式 第五行:#History

linux下Bash编程case语句及编写脚本(八)

1.case语句,格式如下: case 变量 in 值1) 语句1 ... ;;  每分支语句以分号结束 值2) 语句2 ... ;; *)    其他,相当于if语句else 语句3 ... ;; esac   整条case语句结束 2.编写一个任意添加与删除用户的脚本,要求如下: 2.1:如果脚本选项是-a或--add:,将添加用户; 如果选项是-d或--del,将删除用户, 如果是-h或--help显示帮助信息,如果是-v或--verbose显示执行过程,否则不显示执行过程 2.2:脚本选

bash脚本之case语句应用,while、until和select循环应用及其示例

bash脚本编程: case选择分支结构: case: case 词 in [模式 [| 模式]...) 命令 ;;]... esac 在脚本中使用case的结构: case ${VAR_NAME} in PATTERN1) COMMAND ... ;; PATTERN2) COMMAND ... ;; ... esac 扩展: case ${VAR_NAME} in PATTERN1) COMMAND ... ;; PATTERN2) COMMAND ... ;; *)            

case语句脚本练习

#! /bin/sh # 加减乘除的小脚本,主要练习case语句 case $2 in +) echo "$1 + $3 = `expr $1 + $3` " ;; -) echo "$1 - $3 = `expr $1 - $3`" ;; \*) echo "$1 * $3 = `expr $1 \* $3`" ;; /) if [ $3 = 0 ] then echo "除数不能为0" else echo "$1

bash脚本编程选择执行之case语句

选择执行的三种方式: (1) &&, || (2) if语句 (3) case语句 case语句的语法格式: case  $VARAIBLE  in PAT1) 分支1 ;; PAT2) 分支2 ;; ... *) 分支n ;; esac case支持glob风格的通配符: *:任意长度的任意字符: ?:任意单个字符: []:范围内任意单个字符: a|b:a或b: 示例:写一个服务框架脚本: $lockfile,  值/var/lock/subsys/SCRIPT_NAME (1) 此脚本