记录一个shell基本脚本

发布于:2022-11-03 ⋅ 阅读:(273) ⋅ 点赞:(0)

有时候闲着没事干,总想找点什么打发时间,所以又折腾了一个shell脚本,没有具体要做的事情,无非有些好玩,有些作用

彩色时间,在shell里面显示一个绚丽的时间

 

动态时间,可以作为shell待机屏保,还能实时查看当前的时间,个人觉得有些小爱好的朋友可以玩玩,基于写vue脚本的时候启动控制台的特殊字体

 shell对话,制作一个选项供用户选择,以实现不同的目标,比如版本号选择

 密码设置,可以通过该对话框让用户设置某个程序的密码,功能与对话相似,支持限时输入

版本检测,可以使用该检测函数发散思维,检测你想检测的所有软件版本

 由于我的环境是centos 7 无法直接安装toilet,需要提前安装repo源,所以我把源下载到本地,从本地安装,省去后面自行查找的问题,我把这个源放在资源地址里面,大家自行下载

centos-7-x86-64-libcaca-devel-0.99-0.19.rpm icon-default.png?t=M85Bhttps://download.csdn.net/download/lgamep/86894508

centos-7-x86-64-libcaca-0.99-0.19.beta19.el7 icon-default.png?t=M85Bhttps://download.csdn.net/download/lgamep/86894502

#!/bin/bash
curpwd=$PWD
LOG_FILE=/tmp/log.txt
phpversion=`php -r "echo phpversion();"`;
function toiletd() {
	if hash toilet 2>/dev/null; then
		echo "$(date '+%D %T' | toilet -f term -F border --gay)";
	else
		echo 工具toilet缺省,安装toilet
		cd ~/
		yum install -y $curpwd/centos_7_x86_64_libcaca-0.99-0.19.beta19.el7.centos.x86_64.rpm
yum install -y $curpwd/centos_7_x86_64_libcaca-devel-0.99-0.19.beta19.el7.centos.x86_64.rpm
wget http://caca.zoy.org/raw-attachment/wiki/toilet/toilet-0.3.tar.gz && tar zxvf  toilet-0.3.tar.gz && cd toilet-0.3 && ./configure && make && make install
		cd ..
		rm -rf toilet-0.3.tar.gz
		cd $curpwd
		echo 
		echo 开始处理业务
		toiletd
	fi
}

toiletd

function brand() {
	echo ------------------------------------------------------------------------
	figlet -f big TRADE.REST
	echo ------------------------------------------------------------------------
	oclock
}
function oclock() {
	watch -n1 "date '+%D%n%T'|figlet -k"
}
if hash figlet 2>/dev/null; then
	brand
else
	yum install -y figlet
fi
function versionIs() {
	if [[ $1 =~ $2 ]]; then
		return `true`;
	else 
		return `false`;
	fi
}

function getsum(){
	local sum=0
	for((i=$1;i<=$2;i++)); do
		((sum+=i))
	done
	echo $sum
	return $?
}

if  versionIs $phpversion 7.2 ; then 
	echo "php version is 7.2"
else 
	if versionIs $phpversion 7.1; then
		echo "$phpversion is 7.1"
	else	
		echo "Error version by $version"
	fi
fi


function choose() {
  read -n 1 -p $1 char
  if [[ $char == y ]]; then
	printf "\n"
  else
	if [[ $char == n ]]; then
		printf "\n"
	else
		printf "\n"
		choose $1
	fi
  fi
}

function remove() {
	choose "您确定要删除数据吗?(请输入y/n):"
	if [[ $char == y ]]; then
		read -n 1 -p $'请选择删除数据类型: \n 1. 运行日志 \n 2. 模版缓存 \n 3. cache缓存 \n :)' clear
		case $clear in
			1)
				printf "\n"
				read -p $'请输入删除最近多少天以前的日志: \n :)' day
				echo "开始清理$day天以前的日志"
				echo "" >> $LOG_FILE
				find $curpwd/runtime/log -mtime +$day -name "*.log" -exec rm -f {} \; -print | tee -a "${LOG_FILE}" | wc -l | xargs echo "Files rming:" >> "${LOG_FILE}";
				cat $LOG_FILE
				rm -rf $LOG_FILE
				echo "$day天以前的日志清理完成"
				;;
			2)
				printf "\n"
				echo "开始清理模版缓存"
				echo "" >> $LOG_FILE
				find $curpwd/runtime/temp -name "*.php" -exec rm -f {} \; -print | tee -a "${LOG_FILE}" | wc -l | xargs echo "Files rming:" >> "${LOG_FILE}";
				cat $LOG_FILE
				rm -f $LOG_FILE
				echo "模版缓存日志清理完成"
				;;
			3)
				printf "\n"
				echo "开始清理cache缓存"
				echo "" >> $LOG_FILE
				find $curpwd/runtime/cache -name "*.php" -exec rm -f {} \; -print | tee -a "${LOG_FILE}" | wc -l | xargs echo "Files rming:" >> "${LOG_FILE}";
				cat $LOG_FILE
				rm -f $LOG_FILE
				echo "cache缓存清理完毕"
				;;
			*)
				printf "\n"
				echo "Usage: [1|2|3]"
				remove
				;;
		esac
	else
		printf "\n"
		echo '没有删除任何日志'
	fi
}

function countdown() {
	read -t $1 -n $3 -sp $2 args
	echo $args
	return $?
}

function setpwd() {
	pwd1=$(countdown 20 "请输入密码(20秒内):" 8)
	echo
	pwd2=$(countdown 20 "请再次输入密码(20秒内):" 8)
	
	printf "\n"

	if [[ $pwd1 == $pwd2 ]]; then
		echo "密码与确认密码一致,验证通过"
	else
		echo "密码与确认密码不一致,验证失败"
	fi
}

function Cls() {
	printf "\033c"
	echo ------------------------------------------------------------------------
	figlet -f big TRADE.REST
	echo ------------------------------------------------------------------------
	toiletd
}

function Back() {
	echo ------------------------------------------------------------------------
	 figlet -f big TRADE.REST
	echo ------------------------------------------------------------------------
        toiletd
}

function option() {
        read -n 1 -p $'你想做点什么?\n 1. 显示屏保(动态时钟) 2. 删除数据  3. 统计数量和: \n 4. 设置密码  5. 退出 \n :)' id
        case $id in
                1)
			Cls
			printf "\n"
                        oclock
			printf "\n"
			Back
                        option
                        ;;
                2)
			Cls
			printf "\n"
                        remove
			printf "\n"
			Back
                        option
                        ;;
                3)
			Cls
			printf "\n"
                        read -p "请输入开始,结束数字 计算开始-结束之间的总和:" m n
                        total=$(getsum $m $n)
                         echo 开始到结束之间的和值为 $total
			printf "\n"
			Back
                        option
                        ;;
                4)
			Cls
			printf "\n"
                        setpwd
			printf "\n"
			Back
                        option
                        ;;
		5)
			Cls
			echo 
			exit 8
			;;
                *)
			Cls
			printf "\n"
                        echo "Usage: [1|2|3|4|5]"
			Back
                        option
                        ;;
        esac
        exit 0
}

option


网站公告

今日签到

点亮在社区的每一天
去签到