2016-12-02 6 views
0

私はUNIXの初心者です。これは私の最初のforループ文です。予期しないトークン 'の近くでの構文エラーが発生しました。これを解決するのを手伝ってください。私は間違って何をしたのですか?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'を持っているので、あなたは、この答えがあなたにしていることを正確にはしていません。 –

関連する問題