zoukankan      html  css  js  c++  java
  • 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
    

      

  • 相关阅读:
    ES6的模块化历史
    javaee笔记之web.xml文件内的标签到底什么意思
    iTOP4412设备驱动学习五--地址和存储的概念
    iTOP4412设备驱动学习四--嵌入式硬件研发流程PCB和原理图的查看
    iTOP4412设备驱动学习三--设备节点的生成和调用:杂项设备驱动的注册和调用
    iTOP4412设备驱动学习二--在module中注册设备
    iTOP4412设备驱动学习一--设备和驱动的注册
    Linux下阅读源代码工具安装
    结构体
    综合实例:个人银行账户管理程序
  • 原文地址:https://www.cnblogs.com/mountain2011/p/9375109.html
Copyright © 2011-2022 走看看