zoukankan      html  css  js  c++  java
  • shell 编程实战

    书写想法:

    工作流程中,有个shell写的脚本,400多行,看完一脸懵逼,这尼玛是啥??

    于是找来资料,开始学习shell编程理论

    只看理论不实践,早晚忘光光,决定动手写一个小的且可用于工作中的小脚本。

    正式代码:

     1 #!/bin/bash
     2 
     3 # 验收shell学习成果
     4 # 增加查询其他用户
     5 
     6 clear 
     7 
     8 echo -e "33[32m
    地球是圆的,而看似像终点的地方可能也只是起点。
     33[0m"
     9 
    10 function get_job_id() {
    11     if [ $user ];then
    12         ids=$(qstat -u ${user} |  less  | cut -d  " " -f1  | sed -n  '3,$p')
    13     else
    14         ids=$(qstat  |  less  | cut -d  " " -f1  | sed -n  '3,$p')
    15         
    16     fi
    17 
    18     testhead=$(echo $ids | tr " " "
    " | head -1)
    19 
    20     if [ $testhead ];then
    21         num=$(echo ${ids} | tr " " "
    " | wc -l )
    22     else 
    23         num=0
    24     fi
    25 }
    26 
    27 
    28 function get_id_info() {
    29     shell=$(qstat  -j  ${id}    | grep  job_args | awk -F " " '{print $NF}')
    30     usage=$(qstat  -j ${id}    | grep  usage | awk -F " " '{print $3,$4,$5,$6,$7,$8,$9,$10}')
    31     if [ ! $shell ];then
    32         shell=$(qstat  -j  ${id}    | grep  script_file | awk -F " " '{print $NF}')
    33     fi
    34 
    35     echo -e """
    36     033[36mshell: 033[34m${shell}
    37     033[36musage: 033[33m${usage}
    38     033[0m"""
    39 
    40 }
    41 
    42 function print_hello() {
    43     if [ ! $user ];then
    44         user=$(who am i | cut -d " " -f1)
    45     fi
    46     echo -e "33[36mhello $user, 世界在你想象33[0m
    "
    47 }
    48 
    49 print_hello
    50 
    51 while getopts ":i:u:ahs" opt;do
    52     case $opt in 
    53     i)
    54         id=$OPTARG
    55         get_id_info
    56         ;;
    57     s)
    58         get_job_id
    59         echo -e """33[31m目前一共有 ${num} job在运行中33[0m"
    60         echo  "ids名称:" $ids
    61         ;;
    62     a)
    63         get_job_id
    64         n=1
    65         for id in $ids;do
    66             echo -e """33[31m>>> ${n}	${id}33[0m"""
    67             get_id_info
    68             n=`expr ${n} + 1`
    69         done
    70         ;;
    71     u)
    72         user=$OPTARG
    73         echo "查询用户: "$user
    74         ;;
    75     h)
    76         echo -e '''33[32m
    77          Usage: 查询目前正在运行的job信息
    78 
    79          qstatcheck -s : 展示目前哪些jobid正在运行中
    80          qstatcheck -i jobid : 展示具体id的简略信息
    81          qstatcheck -a : 展示目前所有job的简略信息
    82          
    83          展示指定用户的job信息:
    84          qstatcheck -u aaa -s 
    85          qstatcheck -u aaa -i jobid
    86          qstatcheck -u aaa -a
    87 
    88         '''
    89     esac
    90 done

    代码简单介绍:

    1.shell 函数

    2.shell if条件判断

    3.shell while循环

    4.shell case in用法

    5.shell 的 getopts命令(有python经验的同学,可以类比argparse)

    差不多学到的东西都用上啦。。。。。。

    一点小tips:

    shell 编程没有python那种严格的缩进(区域代码块)

    但是他有自己的风格:

    if .. fi

    case .. esac

    发现没,就是正着写一遍,反着写一遍 。。

    shell 编程分享完啦,欢迎交流。。。

    喔,展示下装逼的显示:

     现在知道ls -l 的参数是咋来的啦。。。。

    bye ~~

  • 相关阅读:
    HDU1506 Largest Rectangle in a Histogram(算竞进阶习题)
    洛谷P1073 最优贸易
    CH2101 可达性统计(算竞进阶习题)
    BZOJ1012 最大数maxnumber
    POJ 3764 The XOR Longest Path
    洛谷P4513 小白逛公园
    外边距叠加问题
    读JS高性能总结——DOM编程(一)
    DOM修改元素的方法总结
    DOM查找元素的方法总结
  • 原文地址:https://www.cnblogs.com/lmt921108/p/12929856.html
Copyright © 2011-2022 走看看