用户工具

站点工具


侧边栏

[侧边栏]

侧栏编辑 后台管理
GIT仓库
老web
C++Reference
快速笔记 笔记浏览

working:7_随笔随记:未整理:shell:通用脚本








框架模板

#!/bin/bash

function script_function()
{
	# 现场环境 ----------------------------------------------------------------------------------------------------
	local SCRIPT_NAME=${BASH_SOURCE[0]##*/}
	local SCRIPT_PATH=$(if [ -n "${BASH_SOURCE[0]%${SCRIPT_NAME}}" ]; then cd ${BASH_SOURCE[0]%${SCRIPT_NAME}}; fi; pwd)
	local WORKIN_PATH=$(pwd)
	
	# 调试信息 ----------------------------------------------------------------------------------------------------
	[[ " $* " =~ " --quiet " ]] && local run_quiet=1
	function run() { if [ "${run_quiet}" == "1" ] ; then "$@" 1>/dev/null; else "$@"; fi; }
	run echo -e "\033[1;30mOptions: ${SCRIPT_NAME} --quiet  Quiet mode compilation\033[0m"; run sleep 0.8

	# ----------------------------------------------------------------------------------------------------
	function STEP_TRACE_INIT() { step_break_name=$1;step_break_num=0;step_break_color=3;[ "$2" != "" ] && step_break_color=$2;}
	function STEP_TRACE_INFO() { step_break_num=$[${step_break_num}+1]; echo -e "\033[1;3${step_break_color}m[${step_break_name}] ${step_break_num} ($1) --------- --------- --------- --------- --------- --------- --------- --------- --------- ---------\033[0m"; }

	# 编译标签 ----------------------------------------------------------------------------------------------------
	[ "$GCC_TARGET_TAG" == "" ] && local GCC_TARGET_TAG=$(${CC} -v 2>&1 | grep Target | cut -d " " -f 2 | sed 's/linux-gnu/linux/g' | sed 's/unknown-nto-qnx/qnx/g')-$(${CC} -v 2>&1 | grep "gcc version" | cut -d " " -f 3)
	[ "$GCC_TARGET"     == "" ] && local     GCC_TARGET=$(${CC} -v 2>&1 | grep Target | cut -d " " -f 2 | sed 's/linux-gnu/linux/g' | sed 's/unknown-nto-qnx/qnx/g')
	[[ "${GCC_TARGET_TAG}" != *-*-*.* ]] && echo -e "\033[1;31mERROR:\033[0m GCC_TARGET_TAG=${GCC_TARGET_TAG} (CC=$CC; CXX=$CXX). Wait 10 seconds to exit." && sleep 10 && read && return
	run echo "GCC_TARGET_TAG=${GCC_TARGET_TAG}"
	run echo "GCC_TARGET    =${GCC_TARGET}"

	# 工程路径和编译参数 ----------------------------------------------------------------------------------------------------
	local CPU_CNT=$[$(nproc --all)-2]
	local WORKSPACE=${WORKIN_PATH}/workspace
	{
		local BINUTILS_SOURCE_PATH=${SCRIPT_PATH}/source/binutils-2.30
		local BINUTILS_BUILD_PATH=${WORKSPACE}/build/binutils_${GCC_TARGET_TAG}
		local BINUTILS_INSTALL_PATH=${WORKSPACE}/package/binutils_${GCC_TARGET_TAG}
	}
		
	function binutils_org_build()
	{
		mkdir -p ${BINUTILS_BUILD_PATH}/current
		cd ${BINUTILS_BUILD_PATH}/current
		{
			sleep 1
		}
	}
	binutils_org_build $*
}


script_function $*

常用脚本

进入脚本文件

#!/bin/bash

function script_function()
{
	# ----------------------------------------------------------------------------------------------------
	local SCRIPT_NAME=${BASH_SOURCE[0]##*/}
	local SCRIPT_PATH=$(if [ -n "${BASH_SOURCE[0]%${SCRIPT_NAME}}" ]; then cd ${BASH_SOURCE[0]%${SCRIPT_NAME}}; fi; pwd)
	local WORKIN_PATH=$(pwd)

}
script_function $*

安静模式运行

# ----------------------------------------------------------------------------------------------------
[[ " $* " =~ " --quiet " ]] && local run_quiet=1
function run() { if [ "${run_quiet}" == "1" ] ; then $* 1>/dev/null; else $*; fi; }

GCC_TARGET_TAG

aarch64-linux-8.3.0
aarch64-qnx7.0.0-5.4.0
aarch64-qnx7.1.0-8.3.0

# ----------------------------------------------------------------------------------------------------
[ "$CC" == "" ] && echo -e "\033[1;31mThe variable CC is not defined.\033[0m" && return 
[ "$GCC_TARGET_TAG" == "" ] && local GCC_TARGET_TAG=$(${CC} -v 2>&1 | grep Target | cut -d " " -f 2 | sed 's/linux-gnu/linux/g' | sed 's/unknown-nto-qnx/qnx/g')-$(${CC} -v 2>&1 | grep "gcc version" | cut -d " " -f 3)
[ "$GCC_TARGET"     == "" ] && local     GCC_TARGET=$(${CC} -v 2>&1 | grep Target | cut -d " " -f 2 | sed 's/linux-gnu/linux/g' | sed 's/unknown-nto-qnx/qnx/g')
echo "GCC_TARGET_TAG=${GCC_TARGET_TAG}"
echo "GCC_TARGET    =${GCC_TARGET}"

STEP_TRACE

# ----------------------------------------------------------------------------------------------------
function STEP_TRACE_INIT() { step_break_name=$1;step_break_num=0;step_break_color=3;[ "$2" != "" ] && step_break_color=$2;}
function STEP_TRACE_INFO() { step_break_num=$[${step_break_num}+1]; echo -e "\033[1;3${step_break_color}m[${step_break_name}] ${step_break_num} ($1) --------- --------- --------- --------- --------- --------- --------- --------- --------- ---------\033[0m"; }

STEP_TRACE_INIT binutils
STEP_TRACE_INFO
STEP_TRACE_INFO

STEP_TRACE_INIT binutils 5
STEP_TRACE_INFO
STEP_TRACE_INFO
working/7_随笔随记/未整理/shell/通用脚本.txt · 最后更改: 2021/07/23 14:46 由 wenliang