#!/bin/bash function SCRIPT_RUN(){ local SCRIPT_NAME=${BASH_SOURCE[0]##*/} local SCRIPT_PATH=$(if [ -n "${BASH_SOURCE[0]%${SCRIPT_NAME}}" ]; then cd ${BASH_SOURCE[0]%${SCRIPT_NAME}} >/dev/null 1>/dev/null 2>/dev/null; fi; pwd)) #[ "$0" == "${BASH_SOURCE[0]}" ] && echo -e "\033[1;31m[ERROR](${BASH_SOURCE[0]##*/}) Using the shell \"source\" command to this script.\033[0m \033[0;33msource ${BASH_SOURCE[0]##*/}\033[0m" && return echo "SCRIPT_PATH=${SCRIPT_PATH}" # -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- local LANCH_MINI_VERSION="1.0.0" local LANCH_MINI_REPO_FILE="https://gitcode.net/codefast/standard/lanch_script/-/raw/dev/master/kernal/${SCRIPT_NAME}" [[ " $@ " =~ " --help " ]] && echo "${SCRIPT_NAME}, ver=${LANCH_MINI_VERSION} (${LANCH_MINI_REPO_FILE})" && return if [[ " $@ " =~ " --releasesync " ]] ; then DATE_CURR=$(date "+%Y.%m.%d_%H.%M.%S") rm /tmp/LANCH_MINI_TEMP_${DATE_CURR} -rf; mkdir -p /tmp/LANCH_MINI_TEMP_${DATE_CURR} wget ${LANCH_MINI_REPO_FILE} -P /tmp/LANCH_MINI_TEMP_${DATE_CURR} chmod +x /tmp/LANCH_MINI_TEMP_${DATE_CURR}/${LANCH_MINI_REPO_FILE##*/} mv /tmp/LANCH_MINI_TEMP_${DATE_CURR}/${LANCH_MINI_REPO_FILE##*/} ${SCRIPT_PATH}/${SCRIPT_NAME} rm /tmp/LANCH_MINI_TEMP_${DATE_CURR} -rf; return fi LANCH_MINI_FIND_PATH=${SCRIPT_PATH}/lanch_script LANCH_MINI_KEYWORD_RULE0_NAME="lanch_name" LANCH_MINI_KEYWORD_RULE0_ID__="lanch_id" LANCH_MINI_KEYWORD_RULE0_HELP="lanch_help" LANCH_MINI_KEYWORD_RULE0_ARGV="lanch_argv" # ---------------------------------------------------------------------------------------------------- # lanch_name : build_aarch64 # lanch_id : 21 # lanch_help : 编译aarch64版本 # lanch_argv : [INIT] 编译初始化(执行cmake)(默认不执行) # lanch_argv : [CLEAN]编译清除(make clean) # lanch_argv : [DEL] 编译删除(rm build_dir) # ---------------------------------------------------------------------------------------------------- LANCH_MINI_KEYWORD_RULE1_NAME="# lanch_name=" LANCH_MINI_KEYWORD_RULE1_ID00="# lanch_id00=" LANCH_MINI_KEYWORD_RULE1_ID__="# lanch_id =" LANCH_MINI_KEYWORD_RULE1_HELP="# lanch_help=" LANCH_MINI_KEYWORD_RULE1_ARGV="# lanch_argv=" LANCH_MINI_KEYWORD_RULE2_NAME="# lanch_name:" LANCH_MINI_KEYWORD_RULE2_ID00="# lanch_id00:" LANCH_MINI_KEYWORD_RULE2_ID__="# lanch_id :" LANCH_MINI_KEYWORD_RULE2_HELP="# lanch_help:" LANCH_MINI_KEYWORD_RULE2_ARGV="# lanch_argv:" LANCH_MINI_KEYWORD_RULE3_NAME="# lanch_name : " LANCH_MINI_KEYWORD_RULE3_ID00="# lanch_id00 : " LANCH_MINI_KEYWORD_RULE3_ID__="# lanch_id : " LANCH_MINI_KEYWORD_RULE3_HELP="# lanch_help : " LANCH_MINI_KEYWORD_RULE3_ARGV="# lanch_argv : " LANCH_MINI_ENABLE_NAME_USE_FILENAME=0 unset LANCH_MINI_LIST_NAME #脚本标题 unset LANCH_MINI_LIST_ID00 #脚本序号 unset LANCH_MINI_LIST_HELP #脚本说明信息 unset LANCH_MINI_LIST_ARGV #脚本参数 unset LANCH_MINI_LIST_FILE #脚本文件名 unset LANCH_MINI_LIST_NUM #脚本数量 unset LANCH_MINI_LIST_ID00_MAX #脚本序号.数值最大值 unset LANCH_MINI_LIST_NAME_SIZEMAX #脚本标题.长度最大值 LANCH_MINI_LIST_NUM=0 LANCH_MINI_LIST_ID00_MAX=0 LANCH_MINI_LIST_NAME_SIZEMAX=0 function LANCH_MINI_FUNCTION__LOADING() { lanch_find_file=$(find ${LANCH_MINI_FIND_PATH} -maxdepth 1 -type f -name "*.sh") unset LANCH_MINI_LIST_BAK_FILE unset LANCH_MINI_LIST_BAK_NAME unset LANCH_MINI_LIST_BAK_ID00 unset LANCH_MINI_LIST_BAK_HELP unset LANCH_MINI_LIST_BAK_ARGV LANCH_MINI_LIST_BAK_NUM=0 for lanch_one_file in ${lanch_find_file}; do lanch_one_name=$(cat ${lanch_one_file} | grep -E "${LANCH_MINI_KEYWORD_RULE1_NAME}|${LANCH_MINI_KEYWORD_RULE2_NAME}|${LANCH_MINI_KEYWORD_RULE3_NAME}") lanch_one_id00=$(cat ${lanch_one_file} | grep -E "${LANCH_MINI_KEYWORD_RULE1_ID00}|${LANCH_MINI_KEYWORD_RULE2_ID00}|${LANCH_MINI_KEYWORD_RULE3_ID00} | ${LANCH_MINI_KEYWORD_RULE1_ID__}|${LANCH_MINI_KEYWORD_RULE2_ID__}|${LANCH_MINI_KEYWORD_RULE3_ID__}") lanch_one_help=$(cat ${lanch_one_file} | grep -E "${LANCH_MINI_KEYWORD_RULE1_HELP}|${LANCH_MINI_KEYWORD_RULE2_HELP}|${LANCH_MINI_KEYWORD_RULE3_HELP}") lanch_one_argv=$(cat ${lanch_one_file} | grep -E "${LANCH_MINI_KEYWORD_RULE1_ARGV}|${LANCH_MINI_KEYWORD_RULE2_ARGV}|${LANCH_MINI_KEYWORD_RULE3_ARGV}") lanch_one_name=${lanch_one_name//"${LANCH_MINI_KEYWORD_RULE1_NAME}"/} lanch_one_id00=${lanch_one_id00//"${LANCH_MINI_KEYWORD_RULE1_ID00}"/} lanch_one_id00=${lanch_one_id00//"${LANCH_MINI_KEYWORD_RULE1_ID__}"/} lanch_one_help=${lanch_one_help//"${LANCH_MINI_KEYWORD_RULE1_HELP}"/} lanch_one_argv=${lanch_one_argv//"${LANCH_MINI_KEYWORD_RULE1_ARGV}"/} lanch_one_name=${lanch_one_name//"${LANCH_MINI_KEYWORD_RULE2_NAME}"/} lanch_one_id00=${lanch_one_id00//"${LANCH_MINI_KEYWORD_RULE2_ID00}"/} lanch_one_id00=${lanch_one_id00//"${LANCH_MINI_KEYWORD_RULE2_ID__}"/} lanch_one_help=${lanch_one_help//"${LANCH_MINI_KEYWORD_RULE2_HELP}"/} lanch_one_argv=${lanch_one_argv//"${LANCH_MINI_KEYWORD_RULE2_ARGV}"/} lanch_one_name=${lanch_one_name//"${LANCH_MINI_KEYWORD_RULE3_NAME}"/} lanch_one_id00=${lanch_one_id00//"${LANCH_MINI_KEYWORD_RULE3_ID00}"/} lanch_one_id00=${lanch_one_id00//"${LANCH_MINI_KEYWORD_RULE3_ID__}"/} lanch_one_help=${lanch_one_help//"${LANCH_MINI_KEYWORD_RULE3_HELP}"/} lanch_one_argv=${lanch_one_argv//"${LANCH_MINI_KEYWORD_RULE3_ARGV}"/} ## 如果没有lanch_name使用文件名 if [ ${LANCH_MINI_ENABLE_NAME_USE_FILENAME} == 1 ]; then if [ ! ${lanch_one_name} ]; then lanch_one_name=${lanch_one_file##*/} lanch_one_name=${lanch_one_name%.*} fi fi ## LANCH_ID00重名 if [ "${LANCH_MINI_LIST_ID00[lanch_one_id00]}" == "${lanch_one_id00}" ]; then lanch_one_id00= fi ## 如果有lanch_name,认为是有效脚本 if [ "${lanch_one_name}" ]; then ## 如果有lanch_id00,存入有效脚本list;否则存入备份list if [ ${lanch_one_id00} ]; then LANCH_MINI_LIST_FILE[lanch_one_id00]=${lanch_one_file} LANCH_MINI_LIST_NAME[lanch_one_id00]=${lanch_one_name} LANCH_MINI_LIST_ID00[lanch_one_id00]=${lanch_one_id00} LANCH_MINI_LIST_HELP[lanch_one_id00]=${lanch_one_help} LANCH_MINI_LIST_ARGV[lanch_one_id00]=${lanch_one_argv} LANCH_MINI_LIST_NUM=`expr $LANCH_MINI_LIST_NUM + 1` if [ ${LANCH_MINI_LIST_ID00_MAX} -lt ${lanch_one_id00} ]; then LANCH_MINI_LIST_ID00_MAX=${lanch_one_id00} fi if [ ${LANCH_MINI_LIST_NAME_SIZEMAX} -lt ${#lanch_one_name} ]; then LANCH_MINI_LIST_NAME_SIZEMAX=${#lanch_one_name} fi else LANCH_MINI_LIST_BAK_FILE[LANCH_MINI_LIST_BAK_NUM]=${lanch_one_file} LANCH_MINI_LIST_BAK_NAME[LANCH_MINI_LIST_BAK_NUM]=${lanch_one_name} LANCH_MINI_LIST_BAK_ID00[LANCH_MINI_LIST_BAK_NUM]=${lanch_one_id00} LANCH_MINI_LIST_BAK_HELP[LANCH_MINI_LIST_BAK_NUM]=${lanch_one_help} LANCH_MINI_LIST_BAK_ARGV[LANCH_MINI_LIST_BAK_NUM]=${lanch_one_argv} LANCH_MINI_LIST_BAK_NUM=`expr $LANCH_MINI_LIST_BAK_NUM + 1` fi fi done ## 备份list导入有效脚本list for((index =0;index<${LANCH_MINI_LIST_BAK_NUM}; index++)); do lanch_one_file=${LANCH_MINI_LIST_BAK_FILE[index]##*/} lanch_one_name=${LANCH_MINI_LIST_BAK_NAME[index]##*/} lanch_one_id00=${LANCH_MINI_LIST_BAK_ID00[index]} lanch_one_help=${LANCH_MINI_LIST_BAK_HELP[index]} lanch_one_argv=${LANCH_MINI_LIST_BAK_ARGV[index]} for((index_1=0;index_1<=${LANCH_MINI_LIST_ID00_MAX};index_1++)); do if [ ! ${LANCH_MINI_LIST_ID00[index_1]} ]; then lanch_one_id00=${index_1} LANCH_MINI_LIST_FILE[lanch_one_id00]=${lanch_one_file} LANCH_MINI_LIST_NAME[lanch_one_id00]=${lanch_one_name} LANCH_MINI_LIST_ID00[lanch_one_id00]=${lanch_one_id00} LANCH_MINI_LIST_HELP[lanch_one_id00]=${lanch_one_help} LANCH_MINI_LIST_ARGV[lanch_one_id00]=${lanch_one_argv} LANCH_MINI_LIST_NUM=`expr $LANCH_MINI_LIST_NUM + 1` if [ ${LANCH_MINI_LIST_ID00_MAX} -lt ${lanch_one_id00} ]; then LANCH_MINI_LIST_ID00_MAX=${lanch_one_id00} fi if [ ${LANCH_MINI_LIST_NAME_SIZEMAX} -lt ${#lanch_one_name} ]; then LANCH_MINI_LIST_NAME_SIZEMAX=${#lanch_one_name} fi break fi done done unset lanch_find_file unset LANCH_MINI_LIST_BAK_FILE unset LANCH_MINI_LIST_BAK_NAME unset LANCH_MINI_LIST_BAK_ID00 unset LANCH_MINI_LIST_BAK_HELP unset LANCH_MINI_LIST_BAK_ARGV unset LANCH_MINI_LIST_BAK_NUM } function LANCH_MINI_FUNCTION__INFO() { echo "LANCH SCRIPT LIST [${LANCH_MINI_LIST_NUM}]:" unset INFO_TOTAL SCRIPT_ID00MAX_LEN=${#LANCH_MINI_LIST_ID00_MAX} unset INFO_TAB_SPACE for((i=0;i<${SCRIPT_ID00MAX_LEN}+${LANCH_MINI_LIST_NAME_SIZEMAX}+4;i++)); do INFO_TAB_SPACE="${INFO_TAB_SPACE} " done for((index=0;index<=${LANCH_MINI_LIST_ID00_MAX};index++)); do #去除回车$(echo ${}) SCRIPT_FILE=${LANCH_MINI_LIST_FILE[index]##*/} SCRIPT_NAME=${LANCH_MINI_LIST_NAME[index]} SCRIPT_ID00=${LANCH_MINI_LIST_ID00[index]} SCRIPT_HELP=${LANCH_MINI_LIST_HELP[index]} SCRIPT_ARGV=${LANCH_MINI_LIST_ARGV[index]} if [ ${SCRIPT_ID00} ]; then SCRIPT_NAME_LEN=${#SCRIPT_NAME} SCRIPT_ID00_LEN=${#SCRIPT_ID00} SCRIPT_ARGV_LEN=${#SCRIPT_ARGV} SCRIPT_ID00_PACKMAX=${SCRIPT_ID00} for((i=${SCRIPT_ID00_LEN};i<${SCRIPT_ID00MAX_LEN};i++)); do SCRIPT_ID00_PACKMAX=" ${SCRIPT_ID00_PACKMAX}" done SCRIPT_NAME_PACKMAX=${SCRIPT_NAME} for((i=${SCRIPT_NAME_LEN};i<${LANCH_MINI_LIST_NAME_SIZEMAX};i++)); do SCRIPT_NAME_PACKMAX="${SCRIPT_NAME_PACKMAX} " done INFO_ONE="\033[0;35m[${SCRIPT_ID00_PACKMAX}]\033[0m \033[0;32m${SCRIPT_NAME_PACKMAX}\033[0m \033[0;33m说明:${SCRIPT_HELP}\033[0m" if [ ${SCRIPT_ARGV_LEN} -gt 1 ]; then SCRIPT_ARGV_MODE=1 if [ ${SCRIPT_ARGV_MODE} == 1 ]; then echo "${SCRIPT_ARGV}" > tmp.txt while read SCRIPT_ARGV_LINE do INFO_ONE="${INFO_ONE}\n${INFO_TAB_SPACE}\033[0;36m参数:${SCRIPT_ARGV_LINE}\033[0m" done < tmp.txt rm tmp.txt else SCRIPT_ARGV_LINE1=$(echo ${SCRIPT_ARGV}) #INFO_ONE="${INFO_ONE}\n${INFO_TAB_SPACE}\033[0;36mUsage:${SCRIPT_ARGV_LINE1}\033[0m" INFO_ONE="${INFO_ONE} \033[0;36mUsage:${SCRIPT_ARGV_LINE1}\033[0m" fi fi INFO_TOTAL="${INFO_TOTAL}${INFO_ONE}\n" fi done echo -en "${INFO_TOTAL}" } #解析 LANCH_MINI_FUNCTION__LOADING #输入信息,脚本选择 if [ $1 ]; then LANCH_SELECT=$1 shift LANCH_ARGV=$@ else LANCH_MINI_FUNCTION__INFO echo "请选择" read LANCH_SELECT if [ ! ${LANCH_SELECT} ]; then exit fi SCRIPT_ARGV=${LANCH_MINI_LIST_ARGV[LANCH_SELECT]} SCRIPT_ARGV_LEN=${#SCRIPT_ARGV} if [ ${SCRIPT_ARGV_LEN} -gt 1 ]; then echo "${SCRIPT_ARGV}" > tmp.txt INFO_ONE="\033[0;36m参数:\033[0m" while read SCRIPT_ARGV_LINE do INFO_ONE="${INFO_ONE}\n\033[0;36m ${SCRIPT_ARGV_LINE}\033[0m" done < tmp.txt rm tmp.txt echo -e "${INFO_ONE}" echo "请输入参数" read LANCH_ARGV fi fi COMMAND_LINE="${LANCH_MINI_LIST_FILE[${LANCH_SELECT}]} ${LANCH_ARGV}" #输入信息,脚本确认 echo -e "已选择: " echo -e " \033[1;35m[${LANCH_SELECT}] \033[0m\033[1;32m${LANCH_MINI_LIST_NAME[${LANCH_SELECT}]}\033[0m" echo -e " \033[0;36m${COMMAND_LINE}\033[0m" #执行 ${COMMAND_LINE} } function SCRIPT_DEBUGING(){ local SCRIPT_NAME=${BASH_SOURCE[0]##*/} local SCRIPT_PATH=$(if [ -n "${BASH_SOURCE[0]%${SCRIPT_NAME}}" ]; then cd ${BASH_SOURCE[0]%${SCRIPT_NAME}} >/dev/null 1>/dev/null 2>/dev/null; fi; pwd)) } [[ ! " $@ " =~ " debuging " ]] && SCRIPT_RUN $@ [[ " $@ " =~ " debuging " ]] && SCRIPT_DEBUGING $@