热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linux查询脚本.sh,项目引导main.sh脚本

为了方便管理项目,自己写了一个main.sh脚本。根据需要简单修改即可很好的使用!bash#!usrbinenvbashcd$(dirname$0)ma

为了方便管理项目,自己写了一个`main.sh`脚本。根据需要简单修改即可很好的使用!

```bash

#!/usr/bin/env bash

cd $(dirname $0)

main(){

#LsFileType sh fish

DirMenuMain

#AutoMenu

}

#------------------------------

#自动菜单,包含所有文件夹和文件,

#按优先级决定执行

#------------------------------

function AutoMenu(){

echo " "

echo "++++++++++++++++++ $(basename $PWD) ++++++++++++++++++"

local m=$(ls)

#未检测到目标自动执行当前路径下的run脚本

if [ ${#m} -eq 0 ] || [ -f run ] || [ -f run.sh ] || [ -f run.fish ];then

ExecRun

exit 0

fi

echo "0.退出"

DisplayList $m

echo "" && read -p "输入对应菜单的序号:" key

if [ $(IsNumber $key) -eq 0 ] ; then

test $key -eq 0 && exit 0

local src=$(echo $m |xargs -n1|sed -n ''$key'p') #获取指定编号的内容

if [ -d $src ] ;then

cd $src

AutoMenu

elif [ -f $src ] ;then

echo ">自动执行$src文件"

ReadFileTypeAndAutoRun $src

exit 0

fi

else

echo "输入的不是数字!"

fi

}

#------------------------------

#以文件夹名称作为菜单名,文件夹下存在

#run/run.sh文件就执行该文件,否则列

#出该目录下的文件夹名称作为菜单名

#------------------------------

function DirMenuMain(){

echo " "

echo "++++++++++++++++++ $(basename $PWD) ++++++++++++++++++"

local m=$(LsDir)

#当前路径下没有下一级目录或者当前目录下存在 run/run.sh/run.fish脚本则自动执行脚本

if [ ${#m} -eq 0 ] || [ -f run ] || [ -f run.sh ] || [ -f run.fish ];then

ExecRun

exit 0

fi

echo "0.退出"

DisplayList $m

echo "" && read -p "输入对应菜单的序号:" key

if [ $(IsNumber $key) -eq 0 ] ; then

test $key -eq 0 && exit 0

local src=$(echo $m |xargs -n1|sed -n ''$key'p') #获取指定编号的内容

cd $src

DirMenuMain

else

echo "输入的不是数字!"

fi

}

#------------------------------

#为输入的对象添加索引并显示,索引从1

#开始

#@param:输入的资源

#------------------------------

function DisplayList(){

local idx=1

for i in $*

do

echo "$idx.${i%.*}"

idx=$[idx+1]

done

}

#------------------------------

#列出当前目录下的所有目录

#------------------------------

function LsDir()

{

for i in $(ls)

do

test -d $i && echo $i

done

}

#------------------------------

#自动执行当前路径下的特定脚本

#按优先级:

#1. run

#2. run.sh

#3. run.fish

#------------------------------

function ExecRun(){

echo "当前路径为:$PWD"

if [ -f run ] ;then

echo ">存在run文件,执行run脚本"

chmod +x run

./run $*

elif [ -f run.sh ]; then

echo ">存在run.sh文件,执行run.sh脚本"

chmod +x run.sh

./run.sh $*

elif [ -f run.fish ]; then

echo ">存在run.fish文件,执行run.fish脚本"

chmod +x run.sh

./run.sh $*

else

echo "不存在run或者run.sh脚本"

fi

}

#------------------------------

#列出当前目录下的所有目录,最前面

#添加序号

#------------------------------

function LsDirAddIndex()

{

local idx=1

local arr=''

for i in $(ls)

do

test -d $i && echo "$idx:$i" && idx=$[idx+1]

done

}

#------------------------------

#判断字符串是否为数字

#@return 0:是 1:不是

#------------------------------

function IsNumber(){

local y=$(echo "$1" | sed 's/[0-9]//g')

if [ -z "$y" ];then

echo 0 #是数字

else

echo 1 #"不是数字"

fi

}

#------------------------------

#文件类型筛选

#列出当前目录下所有满足指定后缀的

#文件

#@param:文件后缀

#例如:LsFileType sh fish plt

#------------------------------

function LsFileType(){

local src=""

for i in $*

do

find . -maxdepth 1 -type f -name "*.$i"

done

}

#-----------------------------------------

#函数名:ReadIni

#功能:读取ini文件

#@param1:ini文件路径

#@param2:Section

#@param3:Option

#例如:ReadIni test.ini s2 Path

#-----------------------------------------

function ReadIni(){

fid=$1

section=$2

option=$3

test ! -f $fid && echo "不存在文件$fid" && exit 2

if [ $# -eq 3 ] ; then

cat $fid | awk '/\['$section'\]/{f=1;next} /\[*\]/{f=0} f' | #找出section下的所有内容

grep $option | # 匹配option的行

grep '=' | # 看看是不是存在=

cut -d'=' -f2| # 获取对应的值

cut -d'#' -f1| # 去除注释

cut -d';' -f1| #去除注释

awk '{gsub(/^\s+|\s+$/, "");print}' #去掉最前面的空格

fi

}

#------------------------------

#自动根据文件后缀选择执行方式

#@param1:指定的文件

#------------------------------

function ReadFileTypeAndAutoRun(){

test ! -f $1 && echo "不存在$1文件" && exit 2

local srcpath=$(readlink -f $1)

cd $(dirname $srcpath)

local dst=$(date +%Y%m%d%H%M%S.mgo) #临时文件

chmod +x $(basename $srcpath)

case $1 in

*.sh | *.fish | *.pl | *.tcl | *.tk | *.py | *.lua) chmod +x $1 && ./$1 ;;

*.c) gcc -o $dst $1 && chmod +x $dst && ./$dst;;

*.cpp) g++ -std=c++11 -o $dst $1 && chmod +x $dst && ./$dst;;

*.go ) go build -o $dst $1 && chmod +x $dst && ./$dst ;;

*.plt) gnuplot $1 ;; #gnuplot

* ) echo "Fuck! I don't konw what it is!" ;;

esac

test -f $dst && rm $dst &>/dev/null

}

main $*

```



推荐阅读
  • C语言是计算机科学和编程领域的基石,许多初学者在学习过程中会感到困惑。本文将详细介绍C语言的基本概念、关键语法和实用示例,帮助你快速上手C语言。 ... [详细]
  • malloc 是 C 语言中的一个标准库函数,全称为 memory allocation,即动态内存分配。它用于在程序运行时申请一块指定大小的连续内存区域,并返回该区域的起始地址。当无法预先确定内存的具体位置时,可以通过 malloc 动态分配内存。 ... [详细]
  • 本文介绍了如何利用Shell脚本高效地部署MHA(MySQL High Availability)高可用集群。通过详细的脚本编写和配置示例,展示了自动化部署过程中的关键步骤和注意事项。该方法不仅简化了集群的部署流程,还提高了系统的稳定性和可用性。 ... [详细]
  • MATLAB字典学习工具箱SPAMS:稀疏与字典学习的详细介绍、配置及应用实例
    SPAMS(Sparse Modeling Software)是一个强大的开源优化工具箱,专为解决多种稀疏估计问题而设计。该工具箱基于MATLAB,提供了丰富的算法和函数,适用于字典学习、信号处理和机器学习等领域。本文将详细介绍SPAMS的配置方法、核心功能及其在实际应用中的典型案例,帮助用户更好地理解和使用这一工具箱。 ... [详细]
  • 在C语言程序开发中,调试和错误分析是确保代码正确性和效率的关键步骤。本文通过一个简单的递归函数示例,详细介绍了如何编写和调试C语言程序。具体而言,我们将创建一个名为 `factorial.c` 的文件,实现计算阶乘的功能,并通过逐步调试来分析和解决可能出现的错误。此外,文章还探讨了常见的调试工具和技术,如GDB和断点设置,以帮助开发者高效地定位和修复问题。 ... [详细]
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • C语言编写线程池的简单实现方法
    2019独角兽企业重金招聘Python工程师标准好文章,一起分享——有时我们会需要大量线程来处理一些相互独立的任务,为了避免频繁的申请释放线程所带 ... [详细]
  • 在Linux系统中,find和grep是两个常用的命令,用于文件和文本的查找。本文将详细介绍这两个命令的区别及其常见用法。 ... [详细]
  • 包含phppdoerrorcode的词条 ... [详细]
  • 本文详细介绍了在 CentOS 7 系统中配置 fstab 文件以实现开机自动挂载 NFS 共享目录的方法,并解决了常见的配置失败问题。 ... [详细]
  • 在Linux系统中避免安装MySQL的简易指南
    在Linux系统中避免安装MySQL的简易指南 ... [详细]
  • 深入解析C语言中结构体的内存对齐机制及其优化方法
    为了提高CPU访问效率,C语言中的结构体成员在内存中遵循特定的对齐规则。本文详细解析了这些对齐机制,并探讨了如何通过合理的布局和编译器选项来优化结构体的内存使用,从而提升程序性能。 ... [详细]
  • Amoeba 通过优化 MySQL 的读写分离功能显著提升了数据库性能。作为一款基于 MySQL 协议的代理工具,Amoeba 能够高效地处理应用程序的请求,并根据预设的规则将 SQL 请求智能地分配到不同的数据库实例,从而实现负载均衡和高可用性。该方案不仅提高了系统的并发处理能力,还有效减少了主数据库的负担,确保了数据的一致性和可靠性。 ... [详细]
  • 本文探讨了 Kafka 集群的高效部署与优化策略。首先介绍了 Kafka 的下载与安装步骤,包括从官方网站获取最新版本的压缩包并进行解压。随后详细讨论了集群配置的最佳实践,涵盖节点选择、网络优化和性能调优等方面,旨在提升系统的稳定性和处理能力。此外,还提供了常见的故障排查方法和监控方案,帮助运维人员更好地管理和维护 Kafka 集群。 ... [详细]
  • 本文对常见的字符串哈希函数进行了全面分析,涵盖了BKDRHash、APHash、DJBHash、JSHash、RSHash、SDBMHash、PJWHash和ELFHash等多种算法。这些哈希函数在不同的应用场景中表现出各异的性能特点,通过对比其算法原理、计算效率和碰撞概率,为实际应用提供了有价值的参考。 ... [详细]
author-avatar
小木马
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有