오류 메시지 예기치 않은 토큰 `(' 근처의 구문 오류 유닉스 계열 환경인 Cygwin과 Windows의 명령줄 인터페이스에서 발생합니다. 이 오류는 이전 DOS/Windows 또는 Mac 시스템에서 편집되거나 생성된 셸 스크립트를 실행하려고 할 때 가장 많이 발생합니다.
이 오류 메시지는 파일을 수동으로 복사하는 등 일상적인 작업을 위해 Linux 명령줄에 명령을 입력할 때도 나타납니다. 이 오류 메시지가 발생하는 주된 이유는 잘못된 구문이나 다른 시스템의 명령을 해석하는 OS의 문제 때문입니다. 쉘.
예기치 않은 토큰 `('? 근처에서 구문 오류가 발생하는 원인
이 오류 메시지의 원인은 매우 다양하며 명령을 실행할 때 구문이 잘못될 가능성이 수천 가지 있기 때문에 한 문서에 나열할 수 없습니다. 이 오류의 핵심 이유는 다음과 같습니다.
- 잘못된 구문 두 플랫폼 중 하나에서 명령을 실행할 때. 명령을 올바르게 사용하지 않거나 잘못된 구문을 입력했습니다.
- 쉘이 호환되지 않습니다. Unix/DOS 시스템 간에.
- 다른 소스에서 bash 셸 스크립트를 실행하는 데 문제가 있습니다. .
이 기사에서 우리는 당신이 코딩의 기초를 알고 있고 당신이 하고 있는 일에 대한 아이디어가 있다고 가정합니다. 초보자라면 실행하려는 언어/명령에 대한 자세한 자습서를 따르는 것이 가장 좋습니다. 구문을 잘못 입력했을 수 있습니다.
해결 방법 1:명령의 구문 및 형식 확인
이 오류 메시지가 표시되는 첫 번째이자 가장 중요한 이유는 코드의 구문이 잘못되었거나 명령의 정확한 형식을 따르지 않았기 때문입니다. 각 명령에는 설명서에서 볼 수 있는 미리 정의된 형식이 있습니다. 여러 매개변수는 선택사항이고 나머지는 필수입니다.
또한 추가 공간에 대해 각별히 주의해야 합니다. , 큰따옴표 사용 및 필수 매개변수가 필요합니다. 이들 중 하나라도 누락되었거나 잘못 선언된 경우 코드를 실행할 수 없습니다.
예를 들어 다음 코드 대신
[mycom7] # ./ctopo.sh um_test1 [(1,2),(2,1)]
다음과 같이 실행해야 합니다.
[mycom7] # ./ctopo.sh um_test1 "[(1,2),(2,1)]"
또한 여러 줄에 걸쳐 있는 경우 명령/쉘 스크립트를 올바르게 실행하고 있는지 확인하십시오.
매개변수 유형 때문에 큰따옴표가 필요합니다. 추가 공간은 코드를 망치고 오류 메시지를 표시할 수도 있습니다. 공식 문서 를 확인하십시오. 실행 중인 명령에 문제가 있는지 확인하십시오.
해결책 2:셸 스크립트 문제 해결
소스 시스템에서 작동하지만 대상에서 오류를 반환하는 셸 스크립트를 사용하는 경우 실행 중에 저장된 변수를 확인하여 스크립트 문제를 해결한 다음 문제의 원인을 확인할 수 있습니다. 이것은 여러 경우에 쉘이 인쇄할 수 없는 문자를 해석하려고 하기 때문에 매우 일반적인 원인입니다.
'vx' 매개변수로 쉘을 실행해 보십시오. 이것은 실행 중인 명령과 스크립트에 저장된 값을 보여줍니다. 여기를 통해 문제를 해결하고 문제를 진단할 수 있습니다.
예를 들어 'vx'를 다음과 같이 포함시킨 후 터미널에서 스크립트를 실행합니다.
# sh -vx ./test_script5.sh
다음과 같이 'cat' 명령을 사용하여 스크립트의 내용을 확인할 수 있습니다.
# cat test_script5.sh
해결책 3:'dos2unix.exe' 명령 사용
Windows/DOS 텍스트 파일에서 새 줄은 캐리지 리턴(\r)과 줄 바꿈(\n)의 조합입니다. Mac(Mac OS X 이전)에서 줄 바꿈은 간단한 캐리지 리턴(\r)을 사용했습니다. Unix/Linux 및 Mac OS X에서는 줄 바꿈(\n) 줄 바꿈을 사용합니다. Cygwin을 사용하는 경우 추가 캐리지 리턴(\r) 문자로 인해 DOS/Windows 및 이전 Mac에서 만든 스크립트를 처리하지 못합니다.
여기에서 스크립트를 올바른 형식으로 변환한 다음 문제 없이 실행할 수 있는 'dos2unix.exe' 명령을 만들 수 있습니다.
결론적으로, 사용 중인 플랫폼의 명령과 유형을 조사하고 불일치가 없는지 확인해야 합니다. 우리가 모든 가능성을 다룰 수는 없기 때문에 어떤 종류의 오류가 발생하고 어떻게 수정해야 하는지 알 수 있을 것입니다.