2016-12-02 140 views
0

我是unix的初學者,這是我第一次用if語句循環。我得到一個錯誤,說語法錯誤附近的意外令牌'然後'。請你能幫我解決這個問題。我做錯了什麼。for循環 - bash腳本語法errror

for file in [email protected] 
do 
    if [[ ! -f [email protected] ]] 
    then 
      echo "Error. File does not exist." 
      exit $ERROR_NO_FILE 

    elif 
    then 
      chmod 755 $file 
      echo "File permissions have been changed." 
      exit $SUCCESS 
    fi 
done 
+1

'[[!! -f $ @]]'?嗯? '-f'不能接受任意數量的參數,並且你不知道'$ @'會擴展到多少。你想要[[!! -f「$ file」]]'(由於[[]]'的副作用,缺少可接受的引用,儘管它仍然不會受到傷害)。 –

+0

另外,你需要在$「',''chmod 755」$ file「'等文件中輸入' - 就這一點而言,這會因空間的文件名而嚴重破壞。通過http://shellcheck.net/運行你的代碼並修復它發現的內容。 –

+1

**不要以任何方式改變您的問題,否則將導致錯誤的答案**。 –

回答

1

中間還有一個額外的elif/then。嘗試將其替換爲else

 exit $ERROR_NO_FILE 

else 
     chmod 755 $file 
+0

仍然給我錯誤。 – pogba123

+1

@ pogba123,因爲你還有額外的'then';你沒有正確地做出這個答案告訴你要做的事情。 –