Bash에서 예기치 않은 토큰 근처의 구문 오류

Muhammad Husnain 2023년6월20일
Bash에서 예기치 않은 토큰 근처의 구문 오류

이 문서는 Bash 스크립트의 보이지 않는 문자로 인해 발생하는 예기치 않은 토큰 구문 오류를 식별하고 수정하는 방법을 보여줍니다.

Bash에서 예기치 않은 토큰 근처의 구문 오류

구문적으로 완벽하게 괜찮아 보이는 Bash 스크립트가 작동하지 않는 경우가 있습니다. 도움이 되지 않는 막연한 구문 오류가 발생합니다.

다음과 같은 코드가 있다고 가정해 보겠습니다.

#!/bin/bash
while :
do
echo "This will repeat every second until you press CTRL + C"
sleep 1
done

구문적으로는 위의 코드가 맞습니다. 그러나 일부 보이지 않는 문자로 인해 Linux에서 코드를 구문적으로 읽을 수 없게 만들 수 있습니다.

보이지 않는 문자가 문제를 일으키는지 어떻게 확인할 수 있습니까? 어떻게 해결합니까?

솔루션은 이전 섹션에서 설명한 것처럼 간단합니다.

문제 식별

filename.sh가 Bash 스크립트용으로 저장한 파일이라고 가정합니다.

터미널을 열고 파일 위치로 이동합니다. 그런 다음 터미널에서 다음 명령을 실행합니다.

cat -v filename.sh

캐리지 리턴 또는 줄바꿈 없음 공백을 나타낼 가능성이 있는 보이지 않는 문자는 ^M, M-BM- 또는 M-로 나타나야 합니다. 다른 이상한 문자가 파일에 들어가면 해당 문자도 볼 수 있어야 합니다.

우리의 경우 문제를 해결할 수 있는 몇 가지 옵션이 있습니다.

콘솔 명령을 사용하여 Windows 줄 바꿈 제거

filename.sh라는 이름의 문제가 있는 파일이 있는 경우 다음 명령을 사용하여 수정된 내용을 correctedFile.sh라는 파일에 저장할 수 있습니다.

tr -d '\r' < filename.sh > correctedFile.sh

비 UNIX 파일을 UNIX 호환 형식으로 자동 변환

이를 위해서는 dos2unix라는 유틸리티가 필요합니다. apt를 패키지 관리자로 사용하는 경우 다음 명령을 사용하여 dos2unix를 설치할 수 있습니다.

sudo apt install dos2unix

또는 아치 기반 배포판을 사용하는 경우 AUR에서 dos2unix를 설치할 수 있습니다.

파일을 UNIX 호환 형식으로 변환하려면 터미널을 열고 원하는 파일이 포함된 폴더로 이동합니다. filename.sh라는 파일을 고려할 것입니다.

터미널에 다음 명령을 입력합니다.

dos2unix filename.sh

위의 명령은 파일을 UNIX 친화적인 형식으로 변환합니다. 따라서 문제를 해결하십시오.

이제 Bash 스크립트가 제대로 실행되기를 바랍니다. 여전히 실행되고 있지 않으면 실제 구문 문제가 있을 가능성이 큽니다.

Muhammad Husnain avatar Muhammad Husnain avatar

Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.

LinkedIn

관련 문장 - Bash Error