예기치 않은 토큰 근처의 Bash 구문 오류 수정

Linux Bash Terminal에서의 코딩은 코딩 부문에서 지배적인 관행이 되었습니다. 소프트웨어 엔지니어와 코딩 언어를 배우는 학생들은 다양한 오류에 직면합니다. 예기치 않은 토큰 ‘(‘ 근처의 구문 오류 또는 예기치 않은 토큰 근처의 Bash 구문 오류와 같은 오류를 반복적으로 본 경우 기사에서 설명하는 방법에 의존하여 능숙한 코더가 될 수 있습니다. 기사에서 설명하는 방법을 읽어보십시오. 설명된 순서를 따르고 파일의 명령줄에서 오류를 수정하십시오.

예기치 않은 토큰 근처의 Bash 구문 오류를 수정하는 방법

Linux Bash는 Linux 기반 시스템용 명령줄 인터프리터이며 Bourne Shell 또는 sh를 대체합니다. 파일 이름은 Linux Bash 스크립팅에서 .sh 형식을 사용하여 지정됩니다. 셸 스크립트의 코드에 형식 문제가 있는 경우 구문 오류가 발생할 수 있습니다. 오류가 ( 문자에 가까우면 쉘이 해당 줄에 오류를 표시하고 해당 줄에 오류를 표시합니다. Linux Bash는 인터프리터이므로 오류가 있는 줄이 다음으로 반환됩니다. 터미널은 스크립트의 나머지 명령 스캔을 중지하므로 특정 명령줄에서 오류를 수정하고 다음으로 진행하여 쉘 스크립트에서 예기치 않은 토큰 오류를 수정해야 합니다. 구문의 원인 Linux Bash에서 예기치 않은 토큰 근처에 오류가 발생하면 이 섹션에 아래와 같이 나열됩니다.

  • 이스케이프 시퀀스를 사용한 코딩 – Bash 스크립팅으로 코드를 작성한 경우 스크립트의 이스케이프 시퀀스 또는 따옴표로 인해 오류가 발생할 수 있습니다. 오류를 수정하려면 이스케이프 시퀀스와 인용 부호를 올바른 형식으로 작성해야 합니다.

  • 코딩 파일의 잘못된 구문 – 루프 순서 변경과 같이 명령이 잘못된 구문으로 작성된 경우 코드의 구문으로 구문 오류가 발생할 수 있습니다.

  • 잘못된 명령어 사용 – 잘못된 값 할당 등 명령어를 올바르게 사용하지 않으면 구문 오류가 발생할 수 있습니다.

  • 시스템에서 호환되지 않는 OS – 코딩 스크립트용 셸이 Unix와 DOS 시스템 간에 호환되지 않으면 예기치 않은 오류가 발생할 수 있습니다.

  • bash 셸 스크립트의 문제 – 다른 시스템에서 복사한 파일의 bash 셸 스크립트에서 실행되는 문제로 인해 예기치 않은 토큰 오류가 발생할 수 있습니다.

설명을 위해 다음 명령줄을 사용하여 Linux Bash 스크립팅에서 생성된 example.sh라는 파일을 고려하십시오. 예제 파일에는 구문 오류 가능성이 있으며 셸 스크립트에서 사용할 수 있는 모든 가능한 명령이 포함되어 있습니다.

str= ‘First command line of ‘(example file)’ in the script’
str= [(1,2),(3,4)]
if[ $day == “mon” ] then
 echo “mon”
else
 echo “no mon”
fi
for VARIABLE in {0..2}; then
do echo command1; echo command2; echo command3; echo command4; done
while true; do if [ $ day == “mon” ]; then echo “mon”; else echo “not mon”; done; fi

방법 1: 각 명령줄에서 수동으로 오류 수정

오류를 수정하는 첫 번째 방법은 스크립트의 각 명령줄에서 구문 오류를 수동으로 수정하는 것입니다. 명령줄에서 예기치 않은 토큰 근처의 구문 오류를 해결하는 단계는 이 섹션에서 설명합니다. 터미널에서 예기치 않은 토큰 오류를 수정하는 프로세스는 다음과 같습니다. ./example.sh 명령을 입력하고 Enter 키를 눌러 터미널에서 파일을 실행합니다.

2. 아래 결과의 명령줄에서 예기치 않은 토큰 오류가 있는 줄을 확인합니다.

3. 아래에 설명된 방법을 개별적으로 수행하고 파일을 저장하여 각 줄의 오류를 수정합니다.

4. 변경 후 파일을 다시 실행하여 파일에서 구문 오류가 해결되었는지 확인합니다.

1단계: 파일 내용 읽기

명령줄에서 구문 오류를 해결하는 첫 번째 단계는 터미널에서 파일을 읽는 것입니다. 파일에 문제가 있는 경우 파일을 볼 수 없습니다. 파일을 보는 일반적인 방법은 ./example.sh 명령을 사용하여 파일을 실행하는 것이지만 파일의 내용을 수정할 수는 없습니다. 파일 내용을 보고 예기치 않은 토큰 ‘(‘ 근처의 구문 오류를 수정하기 위해 명령줄을 수정하는 옵션은 아래에 설명되어 있습니다.

옵션 1: CAT 명령을 통해

첫 번째 옵션은 cat 명령을 사용하여 쉘 스크립트에서 파일을 보는 것입니다. 터미널에 cat -v example.sh 명령을 입력하여 cat 명령을 사용하여 예기치 않은 토큰 오류가 있는 파일의 내용을 읽습니다.

참고 1: example.sh는 설명을 위한 것으로 예상치 못한 토큰 오류가 발생한 파일의 이름을 입력해야 합니다.

참고 2: cat –v 명령은 캐리지 리턴 또는 공백 없음을 나타낼 가능성이 있는 모든 보이지 않는 문자를 표시하는 데 사용됩니다.

옵션 2: VX 명령을 통해

cat 명령을 사용할 수 없는 경우 vx 명령을 사용하여 아래 단계에 따라 파일의 명령을 보고 변경할 수 있습니다. 터미널에 sh –vx ./example.sh 명령을 입력하여 파일을 엽니다.

옵션 3: od –a 명령을 통해

3. 명령줄에 몇 개의 보이지 않는 문자가 있는 경우 od -a 명령을 사용하여 파일을 볼 수 있습니다. 파일 내용이 코드 파일에 표시되지 않으면 od –a example.sh 명령을 사용하여 파일을 읽어 코드를 수정할 수 있습니다.

2단계: Windows 줄 바꿈 제거

셸 스크립트에 Windows 줄 바꿈이 있는 경우 콘솔 명령을 사용하여 줄 바꿈을 제거하고 코드 줄을 새 파일에 복사하여 오류를 수정할 수 있습니다.

터미널에 다음 명령을 입력하여 파일의 내용을 수정된example.sh라는 다른 파일에 저장하여 스크립트에서 Windows 줄 바꿈을 제거합니다.

tr –d ‘r’ <example.sh> correctedexample.sh

III 단계: 새로 생성된 파일에 대한 권한 설정

셸에서 파일을 실행할 수 있도록 파일을 편집하려면 새로 생성된 파일에 대한 권한을 설정해야 합니다. 터미널에 명령을 chmod 755 fixedexample.sh로 입력하여 파일에 대한 권한을 제공하고 파일을 실행합니다. 이제 수정된 파일을 보고 형식 문제를 수정하고 파일에서 예기치 않은 토큰 ‘(‘) 근처의 구문 오류를 수정할 수 있습니다.

IV 단계: 파일의 코드 서식 지정

두 번째 단계는 코드 줄을 개별적으로 포맷하고 파일에서 수동으로 명령줄을 변경하는 것입니다. 예기치 않은 토큰 ‘(‘ 근처의 구문 오류를 수정하기 위해 파일 형식을 지정하는 옵션은 이 섹션에서 아래에 설명되어 있습니다.

옵션 1: 작은따옴표를 큰따옴표로 바꾸기

명령줄에서 작은따옴표를 사용하는 경우 구문 오류를 수정하려면 작은따옴표를 큰따옴표로 바꿔 명령을 변경해야 합니다. example.sh 파일에서 명령에서 ‘ 및 ‘ 또는 작은 따옴표가 있는 코드 줄을 제거하고 작은 따옴표를 큰 따옴표 또는 ” 및 ”로 바꿉니다. 여기에서 예제 파일에서 코드를 str= “First command line of “(example file)” in the script”로 변경해야 합니다.

참고: str= “과 같은 매개변수 유형 명령에는 큰따옴표가 필요합니다.[(1,2),(3,4)]”.

옵션 2: 문자열 행에 $ 추가

스크립트에 문자열 값을 추가한 경우 스크립트의 구문 오류를 수정하려면 문자열 값에 $를 추가해야 합니다. 예기치 않은 오류를 수정하려면 문자열 값과 함께 명령줄에 $를 추가합니다. 여기 예제 파일에서 명령줄을 다음과 같이 변경합니다.

str= $ ‘First command line of ‘(example file)’ in the script’

참고: 문자열 값에 $를 사용하는 경우 명령줄이 ANSI C 표준에 의해 디코딩되므로 백슬래시 이스케이프 시퀀스를 무시할 수 있습니다. 즉, 문자열 값에 $를 사용하면 명령줄에서 작은따옴표 대신 큰따옴표를 사용하는 것을 피할 수 있습니다.

옵션 3: 탭을 공백으로 변환

스크립트의 구문 오류를 수정하려면 명령의 두 명령문 사이에 공백을 탭 대신 공백으로 남겨야 합니다. Cygwin에서 오류가 발생하는 경우 코드의 탭을 공백으로 변환하여 오류를 수정할 수 있습니다. 명령줄은 다음과 같이 제공됩니다.

do echo command1;       echo command2;             echo command3;             echo command4;             done

오류를 수정하려면 위의 명령을 아래와 같이 다시 작성해야 합니다.

do echo command1; echo command2; echo command3; echo command4; done

옵션 4: 이스케이프 문자 사용

bash 문자를 사용하는 경우 bash 문자와 함께 이스케이프 문자를 사용하여 구문 오류를 수정하는 것이 중요합니다. 괄호 또는 ()는 파일의 bash 특수 문자이므로 명령을 실행하기 위해 일반 문자를 이스케이프하려면 명령줄에서 이스케이프 문자 또는 백슬래시를 사용해야 합니다. str= ‘스크립트에서 ‘(예제 파일)’의 첫 번째 명령줄’ 명령은 이스케이프 문자를 사용하므로 터미널에서 오류를 발생시키지 않습니다.

옵션 5: 문자 사이에 공백 사용

쉘 스크립트는 스크립트의 명령과 명령문을 기본값으로 인식합니다. 쉘이 스크립트에서 주어진 명령을 식별할 수 있도록 문자 사이의 적절한 공간 사용을 보장해야 합니다. 공백은 명령줄에서 두 문자를 구별하는 데 사용되는 문자입니다. 코드에서 if와 사이에는 공백이 없습니다. [, which gives the unexpected token error as the if[ command is not identified by the shell. If the code is changed to if [ $ day == “mon” ]; 쉘에서 식별되는 경우 쉘 게시판 명령으로 오류를 해결할 수 있습니다.

옵션 6: 명령문에 명령 구분 기호 사용

셸 스크립트의 다양한 명령은 터미널이 개별 명령을 식별할 수 있도록 명령문으로 분리해야 합니다. Linux Bash에서 구문 오류를 수정하려면 명령 구분 기호를 사용해야 합니다. 명령의 명령문은 세미콜론이나 a와 같은 명령 구분 기호로 구분해야 합니다. 또는 Enter 키를 눌러 새 줄을 입력합니다. 예를 들어 코드의 명령은 다음과 같습니다. [ $ day == “mon” ] 다음과 같이 변경되어야 합니다. [ $ day == “mon” ]; 그런 다음 오류를 수정합니다. 세미콜론은 문자 사이의 명령 구분 기호로 사용되기 때문에 [ and then, you can fix this error.

Option 7: Remove Additional Statements

Sometimes, you may have added additional statements or may have mixed up the codes in case of multiple nested loops. You need to remove the additional statements on the command lines to fix the Syntax error near unexpected token ‘(’ in the Linux Bash. The bash loops for…done or and the constructional constructs if… fi needs to be in the correct syntax. The example file has the wrong syntax in the for loop has the term then which is used in the if statement. Modifying the code as the following code will fix the unexpected token error. The statement then is an additional statement in the code and removing the term will fix the error.

for VARIABLE in {0..2}; do echo command1; echo command2; echo command3; echo command4; done 

Option 8: Ensure Order of Closing of Statements is Correct

If you are using many nested or conditional construct statements in the shell script, you have to ensure that the loops are closed in the order they are opened. You can use a new line separator to avoid conflicts with the loops. The order of closing the nested loops and conditional statements should be correct and must not be altered. The loops in the code while true; do if [ $ day == “mon” ]; 그런 다음 “월”을 에코합니다. else echo “월 아님”; 완료; fi는 올바른 순서로 닫아야 합니다. 아래와 같이 코드를 변경하면 문을 닫는 순서가 수정되어 예기치 않은 토큰 오류를 수정할 수 있습니다.

while true; do if [ $ day == “mon” ]; then echo “mon”; else echo “not mon”; fi; done

방법 2: 코드 재작성

코드를 복사하여 터미널의 새 파일에 붙여넣었다면 수동으로 코드를 다시 작성하여 오류를 수정할 수 있습니다. 쉘 스크립트에서 형식 오류 없이 코드를 작성한 경우 코드의 오류를 수정할 수 있습니다. Microsoft Word와 같은 텍스트 편집기의 숨겨진 문자 및 서식 문제로 인해 코드를 복사하여 붙여넣는 데 사용했을 수 있으므로 오류가 발생했을 수 있습니다.

방법 3: Dos2unix.exe 명령 사용

Unix 운영 체제를 사용하는 경우 줄 바꿈 문자가 n인 코드를 작성하여 파일의 다음 줄로 이동할 수 있습니다. 그러나 Windows OS를 사용하는 경우 캐리지 리턴과 줄 바꿈 또는 파일의 rn을 사용하여 코드의 다음 줄로 이동해야 합니다. Windows OS에서 작성한 코드를 Cygwin에서 실행하면 예기치 않은 토큰 ‘(‘.

오류를 수정하려면 DOS에서 Unix로의 명령줄 도구를 텍스트 파일 형식 변환기로 사용하여 캐리지 리턴 문자를 지워야 합니다. 터미널에 dos2unix.exe example.sh로 다음 명령을 입력하면 파일을 Unix 형식으로 변환할 수 있습니다.

***

이 기사에서는 스크립트에서 예기치 않은 토큰 ‘(‘ 근처의 Bash 구문 오류를 수정하는 기본 방법에 대해 설명했습니다. Linux Bash를 사용하는 경우 이 섹션에서 설명하는 방법을 사용하여 예기치 않은 토큰 근처의 Bash 구문 오류를 수정할 수 있습니다. 전체 기사를 읽고 내용이 유용하다는 것을 알았다면 의견 섹션에 제안 사항과 질문을 알려주십시오.

  기존 아카이브에 비밀번호를 추가하는 방법