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

관련 정보