为了方便我日常工作中的编译环境,免去我敲命令行所浪费的时间,我个人写了一个非常有用而又简单的脚本框架,该框架即可以完成的工程源码编译,也可以清除,拷贝等等操作,具体需要开发者自己来实现细节,我的框架思路就是用到了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. [NOIp 2017]逛公园

    Description 策策同学特别喜欢逛公园.公园可以看成一张$N$个点$M$条边构成的有向图,且没有 自环和重边.其中1号点是公园的入口,$N$号点是公园的出口,每条边有一个非负权值, 代表策策经 ...

  2. python2.7练习小例子(一)

        1)题目:有四个数字:1.2.3.4,能组成多少个互不相同且无重复数字的三位数?各是多少?     程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去掉不满足条件的 ...

  3. display显示方式

    元素的diplay显示方式有多种,隐藏.块级.内联.内联-块级. 1.display:none   隐藏 2.display:block; 表示块级元素. 块级元素会自动在前面和后面加上换行,并且在其 ...

  4. 开发一个 app 有多难?

    171 个回答 默认排序​ 道衍天机 有事情的加微信1293190838找我 1,150 人赞同了该回答 ----------------------------------------------- ...

  5. Java高新技术第一篇:类加载器详解

    首先来了解一下字节码和class文件的区别: 我们知道,新建一个Java对象的时候,JVM要将这个对象对应的字节码加载到内存中,这个字节码的原始信息存放在classpath(就是我们新建Java工程的 ...

  6. 使用Vitrualbox虚拟Windows Server 2016系统的一些常见问题

    所有的问题都是基于有路由器的网络环境下进行设置的,所有的vitrualbox都是安装在win7或者win2008系统上进行的. 1.无法创建x64系统? 解决方法:1)进入主板bios设置,开启cpu ...

  7. DataOutputStream&DataInputStream

    DataOutputStream&DataInputStream是对输出输入流的扩展,可以直接读写int double等数据类型 下面是今天的练习,细节都写到注释里面了: package Zh ...

  8. d4d#9 玩Docker只要浏览器就够了,PWD是个神奇的网站

    本文是d4d系列的第9篇,在这一篇中给大家介绍一个学习Docker最为快捷高效的方式,你不需要自己搭建环境,也不用担心把自己的开发环境搞乱,你需要的只是一个浏览器,就可以立即开始学习Docker的常用 ...

  9. python中的函数(定义、多个返回值、默认参数、参数组)

    函数定义 在python中函数的定义以及调用如下代码所示: def test(x): y = x+1 return y result = test(2) print(result) 多个返回值的情况 ...

  10. Android存储之SQLite数据库

    Android存储之SQLite数据库数据库 创建数据库 package --; import android.content.Context; import android.database.sql ...