0

带有双分号的行中的程序错误,说明意外标记附近的语法错误。有什么建议么?

#!/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!"
4

3 回答 3

2

你的while语法搞砸了。你需要一个介于while和之间的条件do。这可能搞砸了case语句的解析。

于 2013-06-03T19:45:31.213 回答
2

您的代码中存在语法错误。您需要在 之后提供一个表达式while

现在,你有:

while
do

并且您需要指定while关键字将循环的表达式。更具体地说,您似乎只想要一个无限循环。如果这是真的,您需要指定:

while true
do
于 2013-06-03T19:46:13.423 回答
1

你似乎缺少了结案中donewhile陈述*)

于 2013-06-03T20:00:59.780 回答