zoukankan      html  css  js  c++  java
  • Linux之Bash_Script_Program_001

    Bash little script 几枚。

    1.使用xor操作对三个整数进行排序

    #!/bin/bash
    #
    #Sort 3 numbers
    
    #Check the input number                                                                                                                                                                     
    [ $# -lt 3 ] &&  { echo -e "Invalid input.
    Usage $(basename $0) Number1 Number2 Number3" ; exit 1; } 
    
    #Get the input number and check if it is a integer
    declare -a array
    for i in `seq 0 2`;do
            if [[ $1 =~ ^[0-9]+$ ]]; then
                    array[$i]=$1 
                    shift 
            else 
                    array[$i]=0     
                    echo -e "Invalid input.
    The input must be a integer.
    Usage $(basename $0) Number1 Number2 Number3"
                    exit 1
            fi
    done
    
    #Useage XOR operator to exchange value
    exchange(){
            let $1=$1^$2
            let $2=$1^$2                                                                                                                                                                        
            let $1=$1^$2
    }
    
    max=${array[0]}
    middle=${array[1]}
    min=${array[2]}
    if [ $max -le $middle  ];then
            exchange max  middle
    fi
    if [ $max -le $min  ]; then
            exchange max min
    fi
    if [ $middle -le $min  ];then
            exchange middle min
    fi
    echo "Max:$max; Middle:$middle; Min:$min"

    2.统计安装光盘中rpm包支持的平台种类

    方法1:使用基本正则表达式

    ls *.rpm | grep -o "[^.]*.rpm$" | sort | uniq -c

    方法2:使用正则表达式断言

    ls *.rpm | grep -o -P "(?<=.)[0-9a-z_]*(?=.rpm)" | sort | uniq -c
    ls *.rpm | grep -o -P "(?<=.)[^.]*(?=.rpm)" | sort | uniq -c

    3.awk查看磁盘使用率

    df | awk '//dev/sd/{split($5,array,"%");usage[$1]=array[1];} END{for(i in usage){if (usage[i] > 80{ print "Waring Beyond 80%!!!",i" usage is",usage[i]"%";}}}'

    4.sed实现文件奇数或者偶数行的倒序输出

    #倒序输出偶数行
    sed '1!G;h;$!d' $FILE | sed -n '2~2p'
    #倒序输出奇数行
    sed '1!G;h;$!d' $FILE | sed -n '1~2p'

    5.借助eval打印参数值

    for i in `seq 1 $#`;do
            echo "$i args is $(eval "echo "$$i"")"                                                                                                                               
    done
  • 相关阅读:
    bzoj1084
    bzoj1088 [SCOI2005]扫雷
    [LUOGU] 1892 团伙
    [普及组] 2017 成绩
    [LUOGU] P2661 信息传递
    [LUOGU] P1339 [USACO09OCT]热浪Heat Wave
    [LUOGU] P1828 香甜的黄油 Sweet Butter
    [模板] 单源最短路径
    [LUOGU] 1717 钓鱼
    [UVA] 704 Colour Hash
  • 原文地址:https://www.cnblogs.com/orcsir/p/8588332.html
Copyright © 2011-2022 走看看