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
原文地址:https://www.cnblogs.com/orcsir/p/8588332.html