朋友最近又出了一個難題給我
他們補習班老師要他們嘗試寫一個shell script
因為RHCE考試沒有考寫script
所以之前沒有花太多心力在這方面
但shell script對管理機器非常重要
剛好趁機重新學習一下!
順便做個筆記!

題目是:猜數字遊戲
產生一個1~100的亂數
讓人猜到對為止
條件要有
檢查猜的人有無輸入
輸入的是否為數字
或輸入的數字範圍是否為1~100之間
要提示猜的數字太大還是太小
猜對後顯示猜的時間與次數
並詢問是否要繼續玩

以下是我用朋友(kyotsai)的架構修改的

#!/bin/bash
test() {
while true
  do
    read -p "Pleae enter your number (1~100):" GUESS
    TEST1=$( echo "$GUESS" | grep '[^0-9]' )
    if [ "$TEST1" != "" ] ;
    then
      echo -e "\tYou must input number(1~100),not word"
      let COUNT++
      continue;
    elif [ -z "$GUESS" ] ;
    then
      echo -e "\tYou didn't input any number!!"
      let COUNT++
      continue;
    elif [ "$GUESS" -gt 100 ] || [ "$GUESS" -lt 1 ] ;
    then
      echo -e "\tPlease input number between 1 to 100"
      let COUNT++
      continue;
    elif [ "$GUESS" -gt "$RAN1" ] ;
    then
      echo -e "\t$GUESS > Answer"
      let COUNT++
      continue;
    elif [ "$GUESS" -lt "$RAN1" ] ;
    then
      echo -e "\t$GUESS < Anser"
      let COUNT++
      continue;
    elif [ "$GUESS" -eq "$RAN1" ] ;
    then
      STIMES=$( date +%s )
      UTIMES=$( expr "$STIMES" - "$TIMES")
      echo -e "\n\tBingo! You input the right answer"
      echo -e "\tYou guess "$COUNT" times and spend "$UTIMES" seconds\n"
      break;
    fi
  done
}

while true
  do
    TIMES=$( date +%s )
    RAN=$( echo "$RANDOM" )
    RAN1=$( expr "$RAN" % 101 )
    COUNT=1
    test;
   
    while true
      do
        read -p "Do you want to play again?? [Y/N]" FEE
        TEST2=$( echo "$FEE" | grep '[^YyNn]' )
        if [ "$TEST2" != "" ] ;
        then
          echo -e "\tPlease input Y or N !!"
          continue;
        else
          break;
        fi
      done
    if [ "$FEE" = "Y" ] || [ "$FEE" = "y" ] ;
    then
      continue;
    else
      break;
    fi
  done

雖然只是個不起眼的小程式
但畢竟我和朋友都是初學者
花了不少時間研究
但藉由寫script的過程式中
更加的了解語法與指令的用途
下一步要研究如何縮短script
我總覺得上面這一大串一定有可以減肥的地方
如果您是script高手的話
還請您多多指教指教!

 

 

arrow
arrow
    全站熱搜

    文森特 發表在 痞客邦 留言(0) 人氣()