2013-06-03 31 views
0

使用雙分號冒號的行編寫錯誤,在意外的標記附近指出語法錯誤。有什麼建議麼?Bash錯誤 - 使用雙分號冒號的行上的程序錯誤

#!/bin/bash 


echo "Enter the access password..." 
while 
    do 
     read INPUT_STRING 
      case $INPUT_STRING in 

        ##CORRECT PASSWORD##     
        lux)   
         ls -l -S > directory.txt 
          echo "Enter your username..." 
          read a 
          sed '1 i\ $a' directory.txt 
         date=`date` 
          sed '2 i\ $date' directory.txt 
         date= 
         echo "The operation has completed successfully" 
        ;; 

        ##INCORRECT PASSWORD##   
        *) 
         x=1 
         while [ $x -le 3 ] 
         do 
         echo "Incorrect Password, try again. The program will exit after 3 failed attempts." 
         x=$(($x + 1)) 
         sleep 2 
         echo "Enter the access password..." 
         if x=3 
         then exit 
         fi 
        ;; 
      esac 
done 
echo 
echo "Process Complete, Goodbye!" 

回答

2

您的while語法混亂了。您需要whiledo之間的條件。這可能會破壞case聲明的解析。

2

您的代碼中存在語法錯誤。您需要在while之後提供一個表達式。

現在,您有:

while 
do 

,你需要指定epxression的while關鍵字將上環。更具體地說,它看起來像你只是想要一個無限循環。如果這是真的,你需要指定:

while true 
do 
2

你似乎缺少一個done來關閉while聲明中*)情況下