为了方便我日常工作中的编译环境,免去我敲命令行所浪费的时间,我个人写了一个非常有用而又简单的脚本框架,该框架即可以完成的工程源码编译,也可以清除,拷贝等等操作,具体需要开发者自己来实现细节,我的框架思路就是用到了bash shell脚本的case语句,这个语句类似我们C语言的switch语句,有若干个分支,接下来我们就来看看具体的编写方法:

#bin/sh
#date:2016.10.20
#author:yang yuanxin
#!/bin/bash
#判断传进来的参数,没有参数返回出错
if [ $# -lt 1 ]; then
    echo "error.. need build eng or clean"
    exit 1
fi
#选择编译版本,make all 或者 make clean 或者打包工程
#其中 make all会编译工程
#make clean会清除工程
#make package会打包工程,将需要下载的文件放到/build/LFP
for arg in "$@"
do
    case $arg in
    "all")      #第一个参数
		#可以编写自己工程的一些操作,比如编译,拷贝等。
    ;;
    "clean")  

    ;;
    "package")  

    ;;
	*)  echo '...' #这里类似C语言的switch语句的default分支
    ;;
	esac
	break ;
done

以下是我在开发中写的一个脚本,拿去改改就可以实现你自己的,非常简单,框架就是这样,万能!

#bin/sh
#date:2016.10.20
#author:yang yuanxin
#!/bin/bash
#判断传进来的参数,没有参数返回出错
if [ $# -lt 1 ]; then
    echo "error.. need build eng or clean"
    exit 1
fi
#选择编译版本,make all 或者 make clean 或者打包工程
#其中 make all会编译工程
#make clean会清除工程
#make package会打包工程,将需要下载的文件放到/build/LFP
for arg in "$@"
do
	case $arg in
    "all")
			echo 'You select build all eng'
			cd /home/se0803/delorean
			sudo ./build.sh -v -p delorean all
			if test $?
			then
				echo "build eng success!"
			else
				echo "build eng fair!"
				exit 1
			fi
			ls -l /home/se0803/delorean/deploy/delorean_bootloader.bin
			ls -l /home/se0803/delorean/deploy/delorean_base.bin
			ls -l /home/se0803/delorean/deploy/delorean_base_comp.bin
			ls -l /home/se0803/delorean/filesys-us  filesys-uk  filesys-bulk
			sudo chmod 777  /home/se0803/delorean/delorean/ -R
			sudo chmod 777  /home/se0803/delorean/deploy/*
			sudo chmod 777  filesys-bulk filesys-uk filesys-us
			cp /home/se0803/delorean/deploy/delorean_bootloader.bin  /home/se0803/delorean/delorean/deploy/ -r
			cp /home/se0803/delorean/deploy/delorean_base.bin   	  /home/se0803/delorean/delorean/deploy/ -r
			cp /home/se0803/delorean/deploy/delorean_base_comp.bin   /home/se0803/delorean/delorean/deploy/ -r
			cp /home/se0803/delorean/filesys-bulk filesys-uk filesys-us    /home/se0803/delorean/delorean/filesys  -R
			if test $?
			then
				sudo echo "cp file success"  >> /dev/nullcd
			else
				echo "cp file error"
				exit 2
			fi
    ;;
    "clean")
			echo 'You select clean all eng'
			cd /home/se0803/delorean
			sudo ./build.sh -c -p delorean all
			if test $?
			then
				echo "build clean success!"
			else
				echo "build clean fair!"
				exit 1
			fi
	;;
	"package")
			echo 'You select Packaging and Deployment'
			cd /home/se0803/delorean
			chmod 755 deploy/*
			./build.sh -w -p delorean all
			echo "Firmware build success!"
			ls -l builds/LFP/*
	;;
	*)  echo 'You do not select a number between build or clean or make package'
    ;;
	esac
	break ;
done

在Linux环境下实现一个非常好的bash脚本框架的更多相关文章

  1. linux环境下安装可操作图库语言Gremlin的图框架HugeGraph

    原创/朱季谦 图数据库是一项比较前沿而逐渐热门的技术,是NoSql数据库的一种,它应用图形理论存储实体之间的关系信息,最主要的组成有两种,结点集和连接结点的边.常见的图数据库有Neo4j,Januas ...

  2. Linux环境下部署完JDK后运行一个简单的Java程序

    前言 前一篇文章详细讲解了如何在Windows环境下安装虚拟机+Linux系统,并且成功部署了JDK. 不过部署完JDK之后,我们判断部署是否成功的依据是看"java -version&qu ...

  3. 由一个简单需求到Linux环境下的syslog、unix domain socket

    本文记录了因为一个简单的日志需求,继而对linux环境下syslog.rsyslog.unix domain socket的学习.本文关注使用层面,并不涉及rsyslog的实现原理,感兴趣的读者可以参 ...

  4. linux 环境下运行STS时 出现must be available in order to run STS

    linux 环境下运行ECLIPSE时 出现 “ A Java Runtime Environment (JRE) or Java Development Kit (JDK) must be avai ...

  5. linux环境下学习使用pro*c/c++工具

    1.proc是oracle用来预编译嵌入SQL语句的c程序. 2.如何使用proc工具 在Linux环境下,首先确保gcc编译器正常使用,安装oracle数据库或者客户端,一般就会默认安装pro*c/ ...

  6. Linux环境下段错误的产生原因及调试方法小结(转)

    最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且 项目工程庞大复杂,出现了不少问题,其中遇到最多.花费时间最长的问题就是著名的“段错误”(Segmentation F ...

  7. java 在linux环境下写入 syslog 问题研究

    1.Syslog 在Unix类操作系统上,syslog广泛应用于系统日志.syslog日志消息既可以记录在本地文件中,也可以通过网络发送到接收syslog的服务器.接收syslog的服务器可以对多个设 ...

  8. 【环境配置】Linux环境下下载、配置java环境、安装eclipse、建立eclipse快捷方式详解

    一.首先是下载Java JDK 到目前为止的最新版本为(jdk1.8.0_60),有两种方式进行下载: 1.使用shell来进行下载,可使用如下命令直接进行下载: wget --no-check-ce ...

  9. Linux环境下安装Tigase XMPP Server

    Tigase是一种XMPP服务器,可以作为采用XMPP协议的各种IM(Instant Messeging)工具(如Pandion.Spark等)的服务器. 在Linux环境下安装Tigase的步骤如下 ...

随机推荐

  1. [HNOI 2001]软件开发

    Description 某软件公司正在规划一项n天的软件开发计划,根据开发计划第i天需要ni个软件开发人员,为了提高软件开发人员的效率,公司给软件人员提供了很多的服务,其中一项服务就是要为每个开发人员 ...

  2. 洛谷P2319 [HNOI2006]超级英雄

    一开始是用二分图匹配(网络流)+二分做的,后来发现直接用匈牙利更简单 #include<cstdio> #include<cstdlib> #include<algori ...

  3. 【bzoj4008 hnoi2015】 亚瑟王

    题目描述 小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑.他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最后一战,就一定要打得漂亮.众所周知,亚瑟王是一个看脸的游戏,技能 ...

  4. [BZOJ]1050 旅行comf(HAOI2006)

    图论一直是小C的弱项,相比其它题型,图论的花样通常会更多一点,套路也更难捉摸. Description 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权 ...

  5. bzoj3963[WF2011]MachineWorks cdq分治+斜率优化dp

    3963: [WF2011]MachineWorks Time Limit: 30 Sec  Memory Limit: 256 MBSubmit: 270  Solved: 80[Submit][S ...

  6. Mysql根据一个基库生成其他库与其不同的库升级脚本

    今天研究了一下不同数据库之间如何做同步.弄了一个升级工具类,希望以后还能有所帮助. public class UpgradeDataBase { public static void main(Str ...

  7. WPF TextBlock 判断 isTextTrimmed 文本是否超出

    WPF TextBlock 设置TextTrimming情况下 判断 isTextTrimmed(Text 文本是否超出 是否出现了省略号) private bool HasTextTrimmed(T ...

  8. JAVA 第二天 内部类

    package com.company; /** * Created by Administrator on 2016/8/23. */ public class Outter {//生成的字节码文件 ...

  9. 用go实现常用算法与数据结构——队列(queue)

    queue 简介 队列是一种非常常见的数据结构,日常生活中也能经常看到.一个典型的队列如下图(图片来自 segmentfault): 可以看出队列和我们日常生活中排队是基本一致的.都遵循 FIFO(F ...

  10. 无忧代理免费ip爬取(端口js加密)

    起因 为了训练爬虫技能(其实主要还是js技能-),翻了可能有反爬的网站挨个摧残,现在轮到这个网站了:http://www.data5u.com/free/index.shtml 解密过程 打开网站,在 ...