2017-04-19 41 views
0

我很新的編程和玩Linux命令,以幫助我的命令和腳本的理解,但我創建的腳本給我一個回聲語法錯誤,我抓我的去爲什麼它給我錯誤。整個腳本假設要求輸入一個範圍內的數字,讀取鍵盤輸入,並循環直到輸入正確的數字。也告訴用戶每次猜測他們都對或錯。Linux Bash數量範圍回聲語法錯誤

我不知道腳本是否會正確運行,腳本中還有哪些內容是錯誤的,請給我反饋並告訴我如何解決問題。提前致謝。

#!/bin/bash 
loop=y 
for i in $(seq 10) 
echo Please pick a number between 1 and 10. 
Read varnumber 
echo you entered: $varnumber 
if 
varnumber=3 
then 
echo Correct number, access granted...nothing 
break 
if 
varnumber <2>4 
then echo Incorrect number, please try again. 
loop=y 
+5

你應該先將它提供給https://www.shellcheck.net/,然後修復它告訴你的一切。 –

+0

As @BenjaminW。已經說過,shellcheck.net是你的朋友。接下來,查看一些關於如何做循環和if語句的bash教程。 –

回答

0

由於存在多個語法錯誤,因此朋友要求使用shellcheck工具。看看這個工具;這將有助於識別語法錯誤。

回到你的腳本,請更改guessNumber任何數量和運行這個:

#!/bin/bash 
guessNumber=3 
let "maxGuess=$guessNumber + $(((RANDOM % 100) + 1))" 
while [ 1 ] ; do 
    printf "\n\nPlease pick a number between 1 and $maxGuess: " 
    read varnumber 
    echo " you entered: $varnumber" 
    if [ "$varnumber" == "$guessNumber" ] ; then 
     echo " Correct number, access granted...nothing" 
     break 
    else 
     echo " Incorrect number, please try again." 
    fi 
done 

事項:

  1. guessNumber =>您配置什麼是正確的猜測。
  2. maxGuess將根據您guessNumber計算
  3. $(((RANDOM % 100) + 1)) =>生成1-100之間的隨機數。更改%之後的數字以使範圍更大或更小。
  4. 使用while循環代替for循環,這將使您的遊戲繼續進行,直到猜測出正確的數字爲止。 [Ctrl + c打破]
  5. 鍵入guessNumber退出循環/遊戲。

希望它給出一個想法,它是如何工作的,快樂的學習bash腳本!