BASHスクリプトはIF構文エラーを表示します。

BASHスクリプトはIF構文エラーを表示します。
for k in {794..800}
if [  -f    "vesta_$k.xyz"    ]
then
      do
         mkdir $k
         mv vesta_$k.xyz $k/vesta.xyz
         cd $k/
                 <<COMMANDS>>
         cd ..
      done
fi

PS Vesta_$k.xyzは一連のファイルです。問題はIFコマンドの最初の行にあります。

答え1

if.. then.. fi完全に内部になければならずfor.. do.. done、通れません。

for        k in {794..800}
do
    if     [ -f "vesta_$k.xyz" ]
    then
           mkdir "$k"
           mv "vesta_$k.xyz" "$k/vesta.xyz"
           cd "$k" || exit 3
           echo '<<COMMANDS>>'
           cd - "$OLDPWD"
    fi
done

関連情報