• linux-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 $# 的意思是从1到$#个数字。
    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 's@,@ @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 's@,@ @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
    
    练习:写一个脚本showlogged.sh,其用法格式为:
    showlogged.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.16.100.177)
    root pts/5 Mar 8 07:56 (172.16.100.177)
    hadoop pts/6 Mar 8 09:16 (172.16.100.177)
    
    #!/bin/bash
    #
    declare -i SHOWNUM=0
    declare -i SHOWUSERS=0
    
    for I in `seq 1 $#`; do //解释:seqs 1 $# 的意思是从1到$#个数字。
    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
    
    
    •调试脚本:bash -x test.sh
    

      

  • 相关阅读:
    poj 3096 Surprising Strings (set)
    hdu 4038 stone
    STL set 使用总结
    poj 3185 The Water Bowls (bfs 加未压缩)
    QPixmap显示图片
    addStretch的作用 .
    Qt SizeHint()
    StyleSheet
    linux编程守护进程编写
    Qt样式表的使用
  • 原文地址:https://www.cnblogs.com/mountain2011/p/9375109.html
Copyright © 2020-2023  润新知