朋友最近又出了一個難題給我
他們補習班老師要他們嘗試寫一個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高手的話
還請您多多指教指教!
全站熱搜
留言列表