Shell 练习

#!/bin/bash
export LANG=en_US.UTF-8
dirofme=$(pwd)
echoContent() {
	case $1 in
	# 红色
	"red")
		# shellcheck disable=SC2154
		${echoType} "\033[31m${printN}$2 \033[0m"
		;;
	# 天蓝色
	"skyBlue")
		${echoType} "\033[1;36m${printN}$2 \033[0m"
		;;
	# 绿色
	"green")
		${echoType} "\033[32m${printN}$2 \033[0m"
		;;
	# 白色
	"white")
		${echoType} "\033[37m${printN}$2 \033[0m"
		;;
	# 黄色
	"yellow")
		${echoType} "\033[33m${printN}$2 \033[0m"
		;;
    # 黑底白字
    "black")
        ${echoType} "\033[40;37m${printN} $2 \033[0m"
        ;;
    # 红底白字
    "redwhite")
        ${echoType} "\033[41;37m${printN} $2\033[0m"
        ;;
	esac
}
echoType="echo -e"
echoContent black "MIKU.sh"

# 脚本快捷方式
installed=0
if [[ -f /usr/bin/miku ]]
then
    installed=1
else
    installed=0
fi
aliasInstall() {
    if [[ -f MIKU.sh ]]; then
        mv ${dirofme}/MIKU.sh ${HOME}
    fi
    if [[ -d "/usr/bin" ]];then
        if [[ ! -f "/usr/bin/miku" ]];then
            ln -s ${HOME}/MIKU.sh /usr/bin/miku
            chmod 700 /usr/bin/miku
            if((installed==0))
            then
                echoContent yellow "脚本已创建快捷方式,可直接通过 miku 命令调用,输入参数 -h 查看帮助"
            fi
            else
            rm -rf /usr/bin/miku
            ln -s ${HOME}/MIKU.sh /usr/bin/miku
            chmod 700 /usr/bin/miku
            if((installed==0))
            then
                echoContent yellow "脚本已创建快捷方式,可直接通过 miku 命令调用,输入参数 -h 查看帮助"
            fi
        fi
    fi
}
aliasInstall

# 参数检测
numorstr(){
    input=
    for i in $@
    do
        i=${i#-}
        res=`echo "scale=2;(${i}+100)/3"|bc`
        res=`echo "${res}"|cut -f1 -d. 2>/dev/null`
        if [ "${res}" -gt 0 ] 2>/dev/null ;then 
          printf  "" 
        else 
          echoContent red '有规定之外的参数:参数非数字'
          exit 0
        fi
    done
}
sum(){
    numorstr $@
    local sum=0
    for i in $@
    do
        sum=`echo "scale=2;${sum}+${i}" | bc`
        shift
    done
    echoContent green "所有参数和:${sum}"
}
rmt(){
    ls -al /tmp
    rm -r /tmp
}
dft(){
    numorstr $1
    for ((i=1;i<=$1;i++))
    do
        if ((i<10))
        then
            mkdir -pv mydir0${i}
        else
            mkdir -pv mydir${i}
        fi
    done
}
sec(){
    select item in "copy" "rename" "remove" "find" "exit"
    do
        case "${item}" in
        "copy")
            echo "输入源路径:"
            read -t 60 src
            echo "复制到:"
            read -t 60 dst
            echo "${src} => ${dst}"
            cp -i ${src} ${dst}
            ;;
        "rename")
            echo "被重命名的文件或目录:"
            read -t 60 old
            echo "重命名为:"
            read -t 60 new
            echo "${old} => ${new}"
            mv "${old}" "${new}"
            ;;
        "remove")
            echo "输入想删除的文件/目录"
            read -t 60 dst
            rm -rf ${dst}     
            ;;
        "find")
            echo "输入想查找的文件/目录"
            read -t 60 dst
            find / -name "${dst}"
            ;;
        "exit")
            break
            ;;
        esac
    done
}
add(){
    sum=`echo "$1+$2"|bc`
    echo "两个数的和:${sum}"
}
mov(){
    for i in 1 2 3 4
    do
        mkdir -pv ${HOME}/m${i}
        cp /m${i}.txt ${HOME}/m${i}/
    done
}
case $1 in
    "-h"|"-H"|"--help")
        tail -n 12 ${HOME}/MIKU.sh|cut -f2 -d#
        ;;
    "-sum")
        shift
        sum $@
        ;;
    "-rmt")
        rmt 
        ;;
    "-dft")
        shift
        dft $1 50
        ;;
    "-lsf")
        ls -F
        ;;
    "-sec")
        shift
        sec
        ;;
    "-man")
        echo "${dirofme}"
        who am i
        cat /etc/passwd|cut -f1 -d:
        tar -czvf  ${HOME}/etc_tar.gz /etc/*
        exit 0
        ;;
    "-add")
        shift
        numorstr $@
        add $@
        ;;
    "-mov")
        mov
        ;;
    "-uni")
        rm -rf /usr/bin/miku
        echoContent redwhite "已卸载"
        ;;
    "")
        ;;
    *)
        echoContent red "错误的参数。"
        ;;  
esac

#   参数列表:
#   参数    用法                        功能
#   -h      -h|H --help                 显示本列表
#   -sum    -sum [数值] [数值] [...]    计算所有数值的和,支持小数
#   -rmt    -rmt                        列出/tmp所有内容,并逐一删除目录内所有内容
#   -dft    -dft [整数|null]            在当前目录创建n个目录,若无参数则创建50个目录
#   -lsf    -lsf                        执行命令 ls -F
#   -sec    -sec [数值]                 一个select菜单copy|rename|remove|find|exit
#   -man    -man                        显示一些内容
#   -add    -add [数值] [数值]          计算两个数值的和,支持小数
#   -mov    -mov                        移动一些文件到一些目录
#   -uni    -uni                        移除脚本安装

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值