bash脚本case语句
case语句:
变量和常量比较,若不等则继续往下比较,如果最后不匹配则使用兜底结果。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
case SWITCH in value1) statement ... ;; value2) statement ... ;; *) statement ... ;; esac
|
示例1:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
#!/bin/bash # case $1 in [0-9]) echo "digit" ;; [a-z]) echo "Lower" ;; [A-Z]) echo "Upper" ;; *) echo "Special character" esac
|
示例2:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
#!/bin/bash # case $1 in 'start') echo "start server ..." ;; 'stop') echo "stop server ..." ;; 'status') echo "Running ..." ;; *) echo "basename $0 {start|stop|restart|startus}" ;; esac
|
示例3:
接受选项及参数,而后能获取每一个选项,及选项的参数,并能根据选项及桉树做出特定的操作。比如:
adminuser.sh –add tom,jerry –del tom,blair -v|–verbose -h|–help
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
#!/bin/bash # DEBUG=0 ADD=0 DEL=0 for I in seq 0 $# ; 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 USER in echo $ADDUSERS | sed '<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="4c3f0c">[email protected]</a>,@ @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 '<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="e596a5">[email protected]</a>,@ @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 exist." fi done fi
|
示例4:
写一个脚本showlogged.sh,其用法格式为:
showlogged.sh -v -v -h|–help
其中,-h选项只能单独使用,业内关于显示帮助信息;-c选项时,显示当前期待能够上登录的所有用户数;如果同时使用了-v选项,则既显示同时登录的用户数,又显示登录的用户的相关信息。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
#!/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|--count -v|--verbose" exit 0 ;; -v|--verbose) let SHOWUSERS=1 shift ;; -c|--count) let SHOWNUM=1 shift ;; *) echo "Usage: basename $0 -h|--help -c|--count -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
|
近期评论