쉘 스크립트를 실행하려고 하면 다음 오류가 발생합니다.
오류: 13행: 예상치 못한 토큰 'fi' 근처에 구문 오류가 있습니다.
스크립트는 다음과 같습니다
case $# in
0) echo Usage is: $0 filename [filename]
exit;;
*);;
esac
for i in $*
do
if test -f $i;
then
echo $i
cat $i
else
fi
done
왜 오류가 발생하나요?
답변1
Healy가 이미 언급했듯이, bash 쉘 스크립트(매우 유사함)는 and if
, else
또는 elif
, 또는 및 해당하는 를 허용하지 않습니다 . (이것은 다음과 같이 요약됩니다. 각 조건은 다음과 같습니다.fi
else
elif
fi
하다무엇. )
명령문 을 삭제하거나 else
나중에 필요한 경우 else
블록 내부에 더미 명령을 배치할 수 있습니다.예를 들어 스크립트를 다음과 같이 다시 작성할 수 있습니다.
case $# in
0) echo Usage is: $0 filename [filename]
exit;;
*);;
esac
for i in $*
do
if test -f $i;
then
echo $i
cat $i
else
true
fi
done
(나도 에 맞게 들여쓰기했습니다 fi
. if
스타일의 문제이지만 개인적으로는 이렇게 읽는 것이 더 쉽다고 생각합니다.)
true
유일한 목적은 성공적인 종료 상태를 반환하는 것이지만 명령이므로 의 이름이 $i
단순 파일( test -f
)을 참조하지 않으면 이 스크립트는 아무 작업도 수행하지 않습니다.
답변2
빈 명령은 허용되지 않으므로 해당 else
줄을 삭제하세요.