Linux-執行校驗指令碼
阿新 • • 發佈:2018-11-10
#!/bin/bash #function : 1 檢查檔案是否存在 2 執行檔案 3 支援單個或多個一起 #file name : #author : #放置jar包的目錄 root_path="./jar/" profiles_active="test_env" loaded_jar_info="./app.properties" ############## #提醒 warn_info(){ echo "$(date +"%Y-%m-%d %T"):$1" } warn_info2(){ echo -e "\033[36m ${1} \033[0m \n" } #列印位置 jar_location(){ echo ${root_path}${1} } #所有檔案校驗 all_check(){ arr_files=$(ls ${root_path}) for key in $(cat "${loaded_jar_info}"|cut -d ':' -f 1 ) do if [ $(echo "${arr_files[@]}" | grep -c "${key}") -ne 1 ];then warn_info "==>error:${key},this file is not exist..." exit fi done warn_info "all check finished..." } #單個檔案校驗 simple_check(){ file_name=${1} arr_files=$(ls ${root_path}) if [ $(echo "${arr_files[@]}" | grep -c "${file_name}") -ne 1 ];then warn_info "==>error:${file_name},this file is not exist..." exit fi warn_info "${file_name} file check finished..." } #載入jar包 load_app(){ jar_name=${1} port=${2} warn_info "======>execute new jar,jar_name:${jar_name},${port}" } #分發app distribute_invoke(){ for key in $(cat "${loaded_jar_info}") do this_file=$(echo ${key}|cut -d ':' -f1) this_port=$(echo ${key}|cut -d ':' -f3) load_app "${this_file}" "${this_port}" done } mymain(){ echo warn_info2 "welcome to use loading sh" while true do awk -F: 'BEGIN {count=0;} { print "\n=>follows files list:";count++ } \ { printf "%3d:%-50s:%5d\n",NR,$1,$3} \ END {printf "\033[36m files list count:%5d\033[0m\n",count} ' \ "${loaded_jar_info}" warn_info2 "you can input [choice sequence],[all],[quit]," read -p "$(warn_info2 "Enter your choice sequence:")" user_choice case $user_choice in [1-9]) choiced_file=$(sed -n "${user_choice}p" app.properties |cut -d ':' -f1 ) choiced_port=$(sed -n "${user_choice}p" app.properties |cut -d ':' -f3 ) simple_check "${choiced_file}" load_app "${choiced_file}" "${choiced_port}" ;; all) all_check distribute_invoke exit ;; quit|q) warn_info2 "bye" exit ;; *) echo "Ignorant" ;; esac done } mymain
app.properties
AAAAAA.jar::8300
BBBBBB.jar::8301
CCCCCC.jar::9000