#!/bin/bash #author:zhengning #date:20170729 #version 1.1 #運動會比賽腳本,同等耗時,誰奔跑的距離遠誰獲勝 #腳本運行方法:直接運行腳本名(sh game.sh) title='第一屆長跑運動會!' #運動會標題設定 User=(小紅 小明 小剛 張三 李四) #數組:全部的運動員,運動員可隨意添加,數量無限制 BEGIN_Y=6 #初始行Y軸定位 BEGIN_X=20 #初始行X軸定位 ENG_Y=$[$BEGIN_Y+${#User[@]}+2] #結束行Y軸定位 Time=1 #頻次間隔 Long=5 #執行20次奔跑 echo -e "\033[2J" #清屏 echo -e "\033[2;2H$title" #輸出運動會標題 #奔跑腳本 function run(){ echo -e "\033[6;0H運動員:" for ((i=1;i<=${#User[@]};i++));do User_num=$[$i-1] User_X=$BEGIN_X User_Y=$[$BEGIN_Y+$i] echo -e "\033[${User_Y};5H${User[$User_num]}:" { echo -e "\033[${User_Y};${User_X}HO" #圖形位置初始定位 sleep 3 #頻次間隔 for ((j=1;j<=$Long;j++));do echo -e "\033[${User_Y};${User_X}H " #清除以前顯示 Step=$[$RANDOM%3+2] #步伐大小範圍(3-5) User_X=$[$Step+$User_X] #更新隨機一次步伐後X軸位置 echo -e "\033[${User_Y};${User_X}HO" #圖形位置定位 sleep $Time #頻次間隔 done Tmp[$User_num]=$User_X #運動員最終距離 Tmp[]數組賦值;即最終X軸距離 /////有問題 echo -e "$User_num\t$User_X" >>tmp.game }& done } #Ready go!!! echo -e "\033[4;2H Ready" ; sleep 1 #顯示準備 echo -e "\033[4;2H " ; run #清楚準備,執行奔跑腳本 echo -e "\033[4;2H 3" ; sleep 1 #倒計時3 echo -e "\033[4;2H 2" ; sleep 1 #倒計時2 echo -e "\033[4;2H 1" ; sleep 1 #倒計時1 echo -e "\033[4;2H go!!!" #倒計時, 開始 sleep $[$Long+1] #等待後臺執行的子進程(run)執行完成 wait #名次排序 #Order=`echo ${Tmp[*]} |tr ' ' '\n' |cat -n |sort -k2nr |awk '{print$1-1}'` #Order=`sort -k2nr tmp.game|awk '{print$1}'` m=0 echo -e "\033[$ENG_Y;0H名次:" for i in `awk '{print$2}' tmp.game|sort -run`;do echo -en "\t第$[++m]名:" for j in `awk -v aa=$i '$2==aa{print$1}' tmp.game`;do echo -ne "${User[$j]}、" done echo -e "\b " done rm tmp.game -f echo "Game over!"