在Linux环境下实现一个非常好的bash脚本框架

时间:2021-06-17 04:15:24

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